Nega sifatli platformer o'yinlarida qahramonlar xuddi tirikdek tabiiy sakraydi va yerga tushadi? Barcha sir — Isroil Nyutonning tortishish qonunlarini JavaScript kodiga ko'chirishdadir! Bugun biz erkin tushish tezlanishini, sakrash impulsini va platformalar ustiga aniq qo'nish fizikasini yaratamiz.
Qahramon ayni lahzada ekranning qaysi pikselida turgani.
y: 200pxQahramon 1 kadrda necha pikselga siljishi.
y += vyHar bir kadrda tezlikni pastga tortib oshiruvchi kuch.
vy += gravityMaktab daftarida `(0,0)` nuqta pastki chap burchakda va Y tepaga o'sadi.
HTML5 Canvas da esa (0,0) nuqta — TEPADAGI CHAP BURCHAK!
• Pastga qulash = Y kattalashadi (+)
• Tepaga sakrash = Y kamayadi (-)!
Sekundiga 60 marta aylanadigan `update()` funksiyasi ichida:
1. Avval gravitatsiya tezlikni oshiradi: `vy += gravity`.
2. So'ngra tezlik koordinatani o'zgartiradi: `y += vy`.
Har bir kadrda qahramon tobora tezroq pastga qulaydi — xuddi haqiqiy hayotdagi kabi!
| Kadr | vy (Tezlik) | y Koordinata |
|---|---|---|
| 1-kadr | 0 + 0.6 = 0.6 | 100.6 px |
| 2-kadr | 0.6 + 0.6 = 1.2 | 101.8 px |
| 10-kadr | 6.0 px/frame | Tez qulash boshlanadi! |
Sakrash — bu bir tekis yuqoriga suzish emas. Bu yerdan bir lahzalik kuchli itarilish.
Kodda biz tezlikka bir zumda kuchli manfiy son beramiz: `player.vy = -14;`.
Shundan so'ng gravitatsiya bu tezlikni sekinlashtirishni boshlaydi!
❌ Fizikasiz: qahramon 10px tepaga yuradi, keyin 10px pastga. Harakat robotdek sun'iy.
✅ Gravitatsiya bilan: eng tepa cho'qqida tezlik silliq 0 ga tushadi, qahramon havoda muallaq turgandek tuyuladi, so'ngra tezlashib yerga tushadi. Bu haqiqiy parabola!
Sakrash paytida o'ngga/chapga bosilsa, harakatga gorizontal tezlik `vx` qo'shiladi. Qahramon chuqurliklar va lazerlar ustidan oshib o'tadi!
Agar shartsiz sakrash yozsangiz, o'yinchi havoda bo'shliq tugmasini 50 marta bosib, osmonga uchib ketadi!
Bizga isGrounded (yerda turibdimi?) bayrog'i kerak: u faqat qahramon polga tekkandagina `true` bo'ladi.
Aynan 3 ta shartni tekshiramiz:
1. Gorizontal bo'yicha: qahramon platforma ustida joylashgan.
2. Vertikal bo'yicha: qahramon oyog'i platforma ustiga tegdi.
3. Qahramon pastga qulayotgan bo'lishi shart (`vy > 0`)!
Juda yengil tortishish. Qahramon osmonga uchib, sekin suzadi.
Ideal muvozanat. Sakrash chaqqon, qo'nish dinamik va tabiiy.
Dahshatli tortishish! Qahramon zo'rg'a sakraydi va bir zumda qulaydi.
Oddiy ha/yo'q o'rniga sonli hisoblagich olamiz: `let jumpsLeft = 2;`.
• Yerda: hisoblagich `2` ga tenglanadi.
• Bo'shliq bosilganda: `jumpsLeft > 0` bo'lsa, sakrash beriladi va 1 ga kamayadi.
• Bu o'yinchiga havoda yana bir marta sakrash imkonini beradi!
Oy, Yer va Yupiter gravitatsiyasini solishtiring.
Eng yuqoridagi qizil platformaga sakrab chiqing.
vy tezlik strelkasining o'zgarishini tahlil qiling.
classes/7-8-sinf/3-hafta/15-dars-oyin-fizikasi-gravitatsiya-va-sakrash/lab/index.html
| Ball | Talab |
|---|---|
| 1–3 ball | vy += gravity formulasi va Y-o'qi yo'nalishi izohlandi |
| 4–7 ball | Barcha platformalarga sakrab chiqildi, parametrlar tekshirildi |
| 8–10 ball | AABB qo'nish shartlari to'liq tahlil qilindi, varaqa to'ldirildi |
Katta Boss Jangi va Arkada Yakuni: Sakrash fizikasini lazerlar, qalqonlar, bonuslar (Power-ups) va epik Boss jangi bilan birlashtiramiz!