الدرس 5 من 10

الجاذبية والقفز

هدف الدرس

سقوط متسارع وقفز من الأرض فقط

01

الشرح

الجاذبية لا تحرّك الجسم مباشرة، بل تغيّر سرعته، ففي كل إطار تزيد vy بمقدار GRAVITY * dt، ثم يتحرّك y بمقدار vy * dt، فيبدأ السقوط بطيئًا ثم يتسارع كما يحدث في الواقع.

والقيمة GRAVITY مقيسة بالبكسل لكل ثانية مربّعة، ولذلك تحتاج إلى dt في الخطوتين كلتيهما، ومن ينساه تصبح لعبته على شاشة 144 هرتز أسرع منها على شاشة 60 هرتز بأكثر من الضعف.

وتتعامل مع الأرض بعد الحركة، فإذا تجاوز أسفل الجسم floorY أعدته فوقها تمامًا وجعلت vy صفرًا، ولو اكتفيت بإيقاف الحركة لغاص الجسم في الأرض بمقدار آخر خطوة. ومن الشرط نفسه تعرف قيمة onGround، ولا تسمح بالقفز إلا من الأرض، وإلا استطاع اللاعب أن يصعد في الهواء بتكرار الضغط.

02

المطلوب

اكتب update(p, dt, floorY) لجسم من الشكل { y, h, vy, onGround }، فتطبّق الجاذبية ثم الحركة ثم تتحقّق من الأرض، وتضبط onGround في كل استدعاء. ثم اكتب jump(p) لتجعل vy تساوي -JUMP_SPEED إذا كان الجسم على الأرض، ولا تفعل شيئًا في غير ذلك. ولتجرّب ذلك انقر على المعاينة ثم اضغط مفتاح المسافة.

الفحوص

6 فحوص
  1. الجاذبية تزيد vy بمقدار GRAVITY × dt
  2. الموضع يتحرّك بمقدار vy × dt
  3. الجسم يقف على الأرض دون أن يغوص فيها
  4. قيمة onGround هي true عند ملامسة الأرض فقط
  5. القفز من الأرض فقط
  6. القفزة ترفع الجسم عن الأرض فعلًا
03

تلميحات

0/3
index.html
المعاينة
index.html100%
–/6

اضغط «تشغيل وتصحيح» ليبدأ الفحص.

تجد 6 فحوص في بطاقة «المطلوب».