0%
التصادمات وCollisionCallbacks — الفصل 32

الفصل 32 — التصادمات وCollisionCallbacks

الجزء 2B — محرك Flame · الفصل 32 من 62 · 9 ساعات

الفصل 32 — التصادمات وCollisionCallbacks

المستوى: متوسط المدة المقدّرة: 9 ساعات المتطلبات المسبقة: الفصول من 27 إلى 31 (Flame، المكوّنات، الـ sprites، المدخلات، الكاميرا)، الفصل 24 (التصادمات المكتوبة يدويًا، AABB، فصل المحاور، tunneling)، الفصلان 10 و11 (الوراثة، تعدد الأشكال، is، الـ mixins) إصدار Flame المستخدم: 1.38.0 ما ستتمكن من فعله في نهاية الفصل: جعل مكوّنات «Donjon de Dart» تتفاعل فيما بينها — جدران لا يمكن اجتيازها، وقطع نقدية تُلتقط، وغوبلن يجرحون — بترك Flame يكتشف التلامسات وكتابة ردّ الفعل بنفسك.


32.0 — أهداف الفصل

في نهاية هذا الفصل ستكون قادرًا على:

  • تحديد ما تؤتمته Flame بدقة وما تتركه على عاتقك مقارنةً بالفصل 24؛
  • تفعيل اكتشاف التصادم بواسطة الـ mixin ‏HasCollisionDetection؛
  • إضافة الـ mixin ‏CollisionCallbacks إلى مكوّن وفهم ما يوفّره؛
  • الاختيار بين RectangleHitbox وCircleHitbox وPolygonHitbox؛
  • إضافة hitbox إلى مكوّن، بوسائط أو بدونها؛
  • استخدام RectangleHitbox.relative() للحصول على hitbox متناسبة مع الأب؛
  • إزاحة hitbox وتغيير حجمها بمعزل عن الشكل المرئي؛
  • عرض جميع الـ hitboxes بفضل debugMode؛
  • التمييز بين CollisionType.active وCollisionType.passive وCollisionType.inactive؛
  • إسناد النوع الصحيح إلى كل فئة من كائنات اللعبة؛
  • تقدير كلفة الأداء الناتجة عن توزيع سيئ للأنواع؛
  • كتابة onCollisionStart وonCollision وonCollisionEnd ومعرفة أيّها يجب استخدامه؛
  • استثمار Set<Vector2> intersectionPoints؛
  • تحديد المكوّن الآخر بالعامل is؛
  • شرح النمط «double dispatch» ولماذا نختبر النوع من الجهتين؛
  • منع البطل من اختراق جدار؛
  • حساب عمق الاختراق ودفع البطل إلى الخارج؛
  • فصل المحورين X وY لتفادي الالتصاق بالزوايا؛
  • استخدام الـ hitboxes الصلبة (isSolid)؛
  • إحاطة منطقة اللعب بـ ScreenHitbox؛
  • إطلاق أشعة باستخدام raycast وraycastAll وraytrace؛
  • بناء خط رؤية للعدو بمساعدة raycast؛
  • وصف الـ broadphase في Flame واستبداله بـ QuadTreeCollisionDetection؛
  • تحديد متى يصبح الـ quadtree مجديًا؛
  • كتابة مستشعر (trigger) لالتقاط الأغراض؛
  • إدارة الأضرار وعدم القابلية للإصابة المؤقتة؛
  • معالجة حالة المقذوفات السريعة والـ tunneling؛
  • تقرير متى يجب الانتقال إلى Forge2D بدل الاكتشاف المدمج؛
  • تجميع مستوى قابل للّعب من «Donjon de Dart» بجدرانه وقطعه النقدية وغوبلنه.

التعليقات

التعليقات مدعومة عبر GitHub Discussions

سجّل الدخول باستخدام GitHub للمشاركة في النقاش

تم نسخ الرابط!