Atölye › Sonsuz Koşucu › 4/19. adım
Koşucuya bir dikey hız veriyoruz: vy. Her karede yer çekimi bu hıza biraz ekler (aşağı doğru), hız da
koşucuyu hareket ettirir. Ayakları zemine değince orada durur. Gerçek düşüş de böyledir: düştükçe hızlanırsın.
Koşucu zaten yerde durduğu için bu adımda bir şey değişmeyecek; ama bir sonraki adımda zıplayınca yer çekimi onu geri indirecek.
```js
const GRAVITY = 0.6
let runner = { x: 50, y: GROUND - STAND_H, w: 40, h: STAND_H, vy: 0 }
function onGround() {
return runner.y + runner.h >= GROUND
}
function update() {
runner.vy += GRAVITY
runner.y += runner.vy
if (onGround()) {
runner.y = GROUND - runner.h
runner.vy = 0
}
}
update()
```vy: 0 → dikey hız: her karede kaç piksel aşağı gideceği (eksi değer yukarı demek). Başta 0.runner.vy += GRAVITY → her kare hıza 0,6 ekle: düşüş hızlanır.runner.y += runner.vy → hıza göre hareket et.onGround() → ayakların yeri runner.y + runner.h; zemine ulaştı ya da geçtiyse true.runner.y = GROUND - runner.h ve runner.vy = 0 → zeminin içine gömülmesin: tam üstüne koy ve dur.update() döngüde draw()'dan önce: önce hareket, sonra çizim.const GROUND = ... satırının altına GRAVITY satırını yaz; runner nesnesinin sonuna , vy: 0 ekle.runner satırının altına onGround ve update fonksiyonlarını yaz.loop içinde draw() satırının üstüne update() yaz.Beceriler: Hız ve yerçekimi