0 من 15 يومًا نسبة الإنجاز: 0%
الأسبوع الثاني - اليوم السابع

الحركة المستمرة والتعامل مع الحواف

⏱ ساعة واحدة ⚙ نظري وعملي
مخرجات التعلم
  • تضمين لبنات الحركة داخل حلقة "كرِّر باستمرار" لإنشاء حركة مستمرة وغير منقطعة.
  • تطبيق لبنة "ارتد إذا كنت عند الحافة" لاحتواء الكائنات المتحركة داخل حدود المنصة.
  • ضبط عدد الخطوات داخل الحلقات التكرارية للتحكم بدقة في سرعة حركة الكائنات.
  • تنسيق حركة عدة كائنات معاً لإنشاء بيئة لعب ديناميكية مليئة بالعقبات.

1. تضمين الحركة داخل حلقة "كرِّر باستمرار"

في تصميم الألعاب، تحتاج بعض الكائنات مثل الأعداء، السيارات، أو السحب إلى التحرك باستمرار دون توقف. إن وضع لبنات الحركة (مثل تحرك 10 خطوة) داخل حلقة كرِّر باستمرار يوجه الحاسوب لتطبيق هذه الحركة بشكل متكرر في كل إطار زمني، مما يخلق حركة سلسة وتلقائية.

هذه الحركة المستمرة تحاكي الفيزياء في الوقت الفعلي. نظراً لأن الحلقات يتم تنفيذها بسرعة فائقة، تتراكم الخطوات الصغيرة لتجعل الكائن ينزلق بسلاسة عبر الشاشة، مما يحاكي قوة الزخم (Momentum).

Continuous Movement Loop
الشكل 7.1: استخدام حلقة "كرِّر باستمرار" لتوليد حركة مستمرة للكائن.

2. احتواء الكائنات باستخدام لبنة "ارتد إذا كنت عند الحافة"

عندما يتحرك الكائن بشكل مستمر في اتجاه واحد، فإنه سيصل في النهاية إلى حافة المنصة ويختفي عن الأنظار. لمنع حدوث ذلك، يوفر سكراتش لبنة ارتد إذا كنت عند الحافة. عندما يلامس الكائن أي حد من حدود المنصة، تكتشف هذه اللبنة الاصطدام، وتعكس اتجاه الكائن، مما يبقيه نشطاً داخل الشاشة.

بدون هذه اللبنة، ستنجرف الكائنات إلى ما بعد الإحداثيات القصوى للمنصة (س: 240) أو (ص: 180) وتعلق خارج الحدود، مما يفسد منطق اللعبة. يحافظ الارتداد على بقاء جميع العناصر ديناميكية وموجودة ضمن إطار الرؤية.

Boundary Bounce Mechanics
الشكل 7.2: آلية عمل ارتداد الكائنات عند ملامستها لحدود إحداثيات المنصة.

3. ضبط سرعات الكائنات باستخدام قيم الخطوات

يتم تحديد السرعة من خلال حجم الخطوات التي يخطوها الكائن في كل دورة من دورات الحلقة التكرارية. فاستخدام لبنة تحرك (3) خطوة داخل الحلقة يجعل الكائن يتحرك ببطء، بينما تحرك (12) خطوة تجعله ينطلق بسرعة ملحوظة عبر الشاشة. تعديل هذه القيم يتيح لك التحكم المطلق في وتيرة اللعبة ومستوى صعوبتها.

يتطلب ضبط السرعات موازنة دقيقة لآليات اللعب. إذا تحركت العقبة بسرعة كبيرة، فلن يتمكن اللاعبون من التفاعل معها لتجنبها. وإذا تحركت ببطء شديد، سيختفي عنصر التحدي. لذا، فإن العثور على القيمة المناسبة للخطوات هو مفتاح التصميم الناجح للعبة.

Tuning Speed with Step Values
الشكل 7.3: مقارنة السرعات الناتجة عن تغيير قيم الخطوات داخل الحلقات المستمرة.

4. تنسيق حركة الكائنات لإنشاء مسار للعقبات

من خلال تزويد الكائنات المختلفة بحلقات "كرِّر باستمرار" خاصة بها، وبسرعات ومواضع بداية متفاوتة، يمكنك إنشاء مسار ديناميكي مليء بالمخاطر. على سبيل المثال، برمجة ثلاث كرات لتتحرك عمودياً وترتد بسرعات مختلفة يخلق مسار عقبات تفاعلي يجب على شخصية اللاعب تجاوزه بأمان.

يُعلِّم هذا التنسيق مهارات التخطيط المكاني؛ حيث يجب عليك حساب إحداثيات البداية ومسار كل عقبة بحيث تُترك فجوات آمنة يمكن للاعب المرور من خلالها، مما يخلق بيئة لعب عادلة ومتوازنة.

نشاط عملي

تطبيق عملي: برمجة بيئة لعب مليئة بالعقبات المرتدة

  1. اختر كائناً ليمثل اللاعب (مثل كائن القط "Cat") وضعه عند الإحداثيات (0، -140). قم ببرمجة مفاتيح الأسهم اليمنى واليسرى لتحريكه أفقياً.
  2. أضف كائناً ليمثل العقبة (مثل "كرة التنس" Tennis Ball) واجعل حجمه 80%.
  3. لكرة التنس، أنشئ المقطع البرمجي التالي: [عند النقر على العلم الأخضر]، أضف [اتجه نحو الاتجاه (45)]، ثم [اذهب إلى الموضع س: (0) ص: (100)].
  4. أضف حلقة [كرِّر باستمرار] أسفل أوامر التهيئة السابقة.
  5. بداخل حلقة "كرِّر باستمرار"، ضع الأوامر التالية بالترتيب: [تحرك (8) خطوة]، ثم [ارتد إذا كنت عند الحافة].
  6. ضاعف (Duplicate) كائن كرة التنس لإنشاء عقبة ثانية. غيّر قيمة الحركة إلى (12) خطوة لجعلها تتحرك بشكل أسرع.
شرح المقطع البرمجي النموذجي
  1. تهيئة موضع واتجاه الكرة: [عند النقر على العلم الأخضر] -> [اتجه نحو الاتجاه (45)] -> [اذهب إلى الموضع س: (0) ص: (100)] (من فئة الحركة).
  2. إنشاء حلقة الحركة اللانهائية: أضف -> [كرِّر باستمرار] (من فئة التحكم).
  3. أوامر الحركة والارتداد (داخل الحلقة): [تحرك (8) خطوة] -> [ارتد إذا كنت عند الحافة] (من فئة الحركة).
  4. إنشاء الكرة الثانية (العقبة الأسرع): بعد مضاعفة الكائن الأول، قم بتعديل سرعته ليصبح: [تحرك (12) خطوة] بدلاً من 8.
  5. الاختبار: قم بتشغيل المشروع. شاهد الكرتين وهما ترتدان باستمرار عن الجدران بسرعات مختلفة، مما يخلق تحدياً حركياً مستمراً!