الدخول والخروج
جزء من قسم الفيزياء وأسلوب اللعب في رحلة Unity على Coddy. الدرس 19 من 63.
يُرسل المُحفِّز رسالتين إضافيتين. تُنفَّذ OnTriggerExit(Collider other) مرة واحدة، في خطوة الفيزياء التي ينتهي فيها التداخل، أيًّا كانت طريقة انتهائه. وتُنفَّذ OnTriggerStay(Collider other) في كل خطوة فيزياء طوال مدة التداخل، بمعدل 50 مرة في الثانية افتراضيًا، مثل FixedUpdate(). وتتلقى الدوال الثلاثة Collider نفسه.
يرفع هذا التيار الهوائي الصاعد كل ما يطفو داخله، ويُبلغ عند مغادرته:
public float lift = 15f;
void OnTriggerStay(Collider other)
{
other.attachedRigidbody.AddForce(Vector3.up * lift);
}
void OnTriggerExit(Collider other)
{
Debug.Log(other.name + " left the updraft");
}ينبغي تطبيق القوة في خطوة فيزياء، لذا فإن OnTriggerStay مناسب لها: يُطبَّق الدفع مرة واحدة في كل خطوة طوال بقاء الكرة في الداخل، ويتوقف لحظة مغادرتها. لا يحتوي التيار الهوائي الصاعد على Rigidbody، لذا يجب أن يمتلك كل جسم زائر واحدًا، ولا تكون قيمة attachedRigidbody أبدًا null هنا. ولتحديد مقدار القوة لكل ثانية داخل OnTriggerStay، اضرب في Time.deltaTime، وهي مدة الخطوة، 0.02، أثناء خطوة الفيزياء. ينتج عن كل زيارة استدعاء واحد لـ OnTriggerEnter، ثم لاحقًا استدعاء واحد لـ OnTriggerExit للمُصادِم نفسه.
التحدي
سهلالمساحة الصفراء Bay المرسومة على أرضية المستودع هي مُشغِّل، وlamp هو ضوء التحذير المثبّت على العمود بجانبها. اكتب LoadingBay بحيث يبيّن المصباح ما إذا كان هناك أي شيء في المساحة:
- عند بدء اللعبة تكون المساحة فارغة، لذا يكون المصباح مطفأً (
lamp.enabled = false). - ما دام هناك عنصر واحد على الأقل في المساحة، يكون المصباح مضاءً.
- عندما يغادر آخر عنصر، ينطفئ المصباح مجددًا.
يمكن أن يكون الصندوقان واللاعب جميعًا في المساحة في الوقت نفسه، لذا فإن مغادرة أحدهم لا تعني أن المساحة أصبحت فارغة. اضغط Play وادفع الصناديق إلى الداخل والخارج باستخدام الأسهم، ثم اضغط Check.
جرّب بنفسك
using UnityEngine;
public class LoadingBay : MonoBehaviour
{
public Light lamp;
// يظل المصباح مضاءً ما دام هناك شيء في منطقة التحميل، وينطفئ عندما تكون فارغة
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الفيزياء وأسلوب اللعب
1الجسم الصلب (Rigidbody)
الجاذبية والكتلةالدفع باستخدام AddForceالقفز باستخدام دفعةFixedUpdate للفيزياءالسرعة المتجهةالأجسام الحركيةمراجعة: منصة الإطلاق