0%
اللاعب: الحركة والرسوم المتحركة — الفصل 36

الفصل 36 — اللاعب: الحركة والرسوم المتحركة

الجزء 2C — اللعبة الكاملة · الفصل 36 من 62 · 10 ساعات

الفصل 36 — اللاعب: الحركة والرسوم المتحركة

المستوى: متوسط / متقدّم المدة المقدّرة: 10 ساعات المتطلبات المسبقة: الفصل 35 (بنية اللعبة، DonjonGame، GameState، الـ overlays، القائمة الرئيسية)، الفصل 23 (السرعة المتجهة، الجاذبية، القفز)، الفصل 24 (AABB وحل التصادمات)، الفصل 28 (المكوّنات، نقاط الارتكاز، دورة الحياة)، الفصل 30 (لوحة المفاتيح)، الفصل 31 (الكاميرا والعالم)، الفصل 32 (CollisionCallbacks)، الفصل 33 (التأثيرات والمؤقّتات) ما ستتمكن من فعله في النهاية: كتابة شخصية منصّات كاملة وممتعة اللعب، مع الجاذبية، والقفز المتغيّر، وcoyote time، وjump buffering، وآلة حالات للرسوم المتحركة، وحصانة مؤقتة، دون استخدام صورة واحدة. إصدار Flame المستخدم في هذا الفصل: flame: ^1.38.0


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

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

  • كتابة Entite، الصنف الأساسي المشترك بين اللاعب والأعداء والزعيم؛
  • كتابة مكوّن Plateforme صلب، مع نسخة يمكن اجتيازها من الأسفل؛
  • بناء غرفة اختبار بالكامل بالشيفرة، دون ملف مستوى ودون صور؛
  • كتابة الصنف Joueur والتعداد EtatJoueur وفق عقد _SPEC-JEU-2C.md؛
  • رسم شخصية واضحة بمجرد RectangleComponent؛
  • اختيار نقطة الارتكاز (anchor) لمكوّن عن دراية، ومعرفة ما الذي تغيّره في الحسابات؛
  • دمج السرعة المتجهة في الموضع باستخدام dt، وتطبيق الجاذبية وتحديد سرعة السقوط؛
  • قراءة لوحة المفاتيح باستخدام KeyboardHandler، والتمييز بين مفتاح مضغوط باستمرار ومفتاح ضُغط للتوّ؛
  • إضفاء game feel على الحركة بفضل التسارع والتباطؤ؛
  • قلب الشخصية بصريًا دون تحريك الـ hitbox الخاص بها؛
  • وضع RectangleHitbox وفهم الغرض منه — وما لا يصلح له؛
  • اكتشاف ما إذا كانت الشخصية تلمس الأرض بشكل موثوق؛
  • حل التصادمات محورًا بمحور، وهي التقنية القياسية في ألعاب المنصّات؛
  • تنفيذ قفزة، ثم قفزة متغيّرة بحسب مدة الضغط؛
  • تنفيذ coyote time وjump buffering؛
  • إضافة قفزة مزدوجة يمكن تفعيلها بثابت بسيط؛
  • التعامل مع المنصّات التي يمكن اجتيازها من الأسفل والنزول الإرادي؛
  • كتابة آلة حالات للرسوم المتحركة نظيفة، بأولوية صريحة للحالات؛
  • تمثيل كل حالة بلون وشكل، ثم استبدالها برسوم متحركة حقيقية؛
  • كتابة attaquer() وsubirDegats() مع حصانة وامضة، وmourir() وإعادة التهيئة؛
  • جعل الكاميرا تتبع اللاعب دون ارتجاج؛
  • ضبط ثوابت game feel انطلاقًا من جدول قيم ابتدائية.

التعليقات

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

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

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