الفصل 23 — الحركة والسرعة والفيزياء البسيطة
الجزء 2A — أساسيات اللعبة ثنائية الأبعاد · الفصل 23 من 62 · 8 ساعات
الفصل 23 — الحركة والسرعة والفيزياء البسيطة
المستوى: متوسط المدة التقديرية: 8 ساعات المتطلبات المسبقة: الفصل 20 (حلقة اللعبة، delta time)، الفصل 21 (Canvas)، الفصل 22 (السبرايتات والرسوم المتحركة)، والبرمجة كائنية التوجه من الفصول 08 إلى 11 ما ستتمكن من فعله في النهاية: كتابة صنف المتجه ثنائي الأبعاد بنفسك، وتطبيق الجاذبية، وجعل الشخصية تقفز بقفزة متغيرة وقفزة مزدوجة وcoyote time واحتكاك وارتداد — كل ذلك بـ Flutter الخالص ودون أي محرك فيزياء.
23.0 — أهداف الفصل
في نهاية هذا الفصل ستكون قادرًا على:
- التمييز بوضوح بين الموضع والسرعة والتسارع، وتحديد الوحدة التي يُعبَّر بها عن كل منها؛
- شرح ما هو المتجه في بعدين ولماذا تحتاج إليه اللعبة؛
- كتابة صنف
Vec2كامل من الصفر، غير قابل للتعديل، وقابل للاختبار؛ - إعادة تعريف العوامل
+و-و*و==في Dart؛ - حساب طول المتجه وتطبيعه؛
- تشخيص وإصلاح الخطأ الشهير المتمثل في أن الحركة القطرية أسرع؛
- استخدام الجداء النقطي لمعرفة ما إذا كان العدو أمام البطل أم خلفه؛
- قياس المسافة بين نقطتين دون جذر تربيعي لا حاجة إليه؛
- تحويل المتجه إلى زاوية باستخدام
atan2، وتحويل الزاوية إلى متجه؛ - كتابة التكامل
position += vitesse * dtوvitesse += acceleration * dt؛ - شرح لماذا يغيّر ترتيب هذين السطرين النتيجة؛
- المقارنة بين أويلر الصريح وأويلر شبه الضمني، واختيار الثاني عن دراية؛
- تطبيق الجاذبية، وإيقاف السقوط عند الأرض، وإطلاق القفزة؛
- تنفيذ القفزة المزدوجة والقفزة المتغيرة وcoyote time وjump buffering؛
- إضافة الاحتكاك والتخميد وسرعة قصوى باستخدام
clamp؛ - ضبط تسارع الشخصية وتباطؤها للحصول على game feel جيد؛
- جعل جسم ما يرتد باستخدام معامل الارتداد (restitution)؛
- كتابة حركة دائرية واستيفاء خطي (
lerp)؛ - جعل الكاميرا أو الرفيق يتبع هدفًا بسلاسة؛
- برمجة اهتزاز الشاشة وknockback؛
- تجميع شخصية كاملة من زنزانة Dart تركض وتقفز وتهبط وتنزلق.
التعليقات
التعليقات مدعومة عبر GitHub Discussions
سجّل الدخول باستخدام GitHub للمشاركة في النقاش