الفصل 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 للمشاركة في النقاش