الفصل 24 — التصادمات وصناديق الاصطدام
الجزء 2A — أساسيات اللعبة ثنائية الأبعاد · الفصل 24 من 62 · 8 ساعات
الفصل 24 — التصادمات وصناديق الاصطدام
المستوى: متوسط المدة المقدّرة: 8 ساعات المتطلبات المسبقة: الفصل 20 (حلقة اللعبة وdelta time)، الفصل 21 (Canvas والإحداثيات)، الفصل 22 (الـ sprites)، الفصل 23 (السرعة المتجهة والفيزياء البسيطة) ما ستتقنه في نهاية الفصل: كتابة كشف التصادم يدويًا بالكامل للعبة ثنائية الأبعاد — AABB والدوائر والنقطة والدائرة-المستطيل — ثم حله بشكل سليم محورًا بمحور، وتفادي الـ tunneling، وتصفية الاختبارات بشبكة مكانية وأقنعة، وجعل اللعبة تتفاعل (أضرار، التقاط، موت).
24.0 — أهداف الفصل
في نهاية هذا الفصل ستكون قادرًا على:
- شرح السبب الذي يجعل التصادم هو اللبنة التي تحوّل الرسم المتحرك إلى لعبة؛
- التمييز بوضوح بين الكشف والحل، ومعرفة أنهما مشكلتان مختلفتان؛
- تعريف hitbox وبيان السبب الذي يمنع من مطابقتها تمامًا لحدود الـ sprite؛
- التفريق بين hitbox وhurtbox وtrigger؛
- تعريف المستطيل المحاذي للمحاور (AABB) وكتابة الصنف المقابل له؛
- صياغة اختبار AABB بالفرنسية قبل كتابته بلغة Dart؛
- كتابة اختبار AABB برمجيًا، وشرح سبب اختبار عدم التصادم؛
- كتابة تصادم دائرة-دائرة دون استدعاء
sqrtأبدًا؛ - كتابة تصادم نقطة-مستطيل وتصادم دائرة-مستطيل؛
- حساب عمق التداخل على المحور X وعلى المحور Y؛
- حل التصادم بالدفع على المحور الأصغر؛
- التعرف على خطأ الشخصية الملتصقة بالجدار وإصلاحه؛
- فصل الحركة إلى مرحلتين: X ثم Y؛
- كشف الأرض والسقف والجدران، واستنتاج
estAuSolمنها؛ - شرح tunneling وإصلاحه بأخذ عينات فرعية أو بـ swept AABB؛
- تقدير كلفة اختبار «الجميع ضد الجميع» وتقليلها؛
- الفصل بين broad phase وnarrow phase؛
- تنفيذ شبكة مكانية للتقسيم؛
- تعريف طبقات وأقنعة للتصادم باستخدام العمليات على البتات؛
- جعل اللعبة تتفاعل: أضرار، التقاط، موت؛
- إدارة حصانة مؤقتة بعد التعرض لضربة؛
- عرض الـ hitboxes في وضع التنقيح (debug)؛
- تحديد ما ستفعله Flame بدلًا منك بدءًا من الفصل 32 بدقة؛
- تجميع زنزانة قابلة للّعب تضم جدرانًا وعملات وعفريتًا (gobelin).
التعليقات
التعليقات مدعومة عبر GitHub Discussions
سجّل الدخول باستخدام GitHub للمشاركة في النقاش