Atölye › Scorched Earth Tarzı Topçu › 9/23. adım
Her karede yerçekimi aşağı hıza biraz ekliyor, mermi de hızı kadar ilerliyor. Gerçek bir eğri için bu kadarı
yetiyor. fly bir mermiyi bir kare ilerletip neye çarptığını söylüyor: yandan çıktıysa 'away', zemine değdiyse
'ground', hiçbir şeye değmediyse null. Mermi bir şeye çarpınca kaybolur ve yeniden nişan alabilirsin.
```js
const GRAVITY = 0.15
// One frame of flight: gravity pulls down. Returns what it hit, or null.
function fly(s) {
s.vy += GRAVITY
s.x += s.vx
s.y += s.vy
if (s.x < 0 || s.x >= W) return 'away'
if (s.y >= groundAt(s.x)) return 'ground'
return null
}
function update() {
if (state !== 'flying') return
const hit = fly(shell)
if (!hit) return
shell = null
state = 'aiming'
}
update()
```s.vy += GRAVITY → yerçekimi hızı değiştirir; s.x += s.vx, s.y += s.vy → hız konumu değiştirir.
Bu ikisi birlikte havaya atılan bir top gibi bir parabol çizer.s.y >= groundAt(s.x) → mermi o sütunda yüzeyin altına indi: zemine çarptı.fly mermiyi parametre olarak alıyor (s); ileride bilgisayar da kafasında hayalî mermiler denerken kullanacak.update → mermi uçuyorsa bir kare ilerlet; bir şeye çarptıysa mermiyi kaldır ve yeniden nişan al.H satırının altına GRAVITY yaz.aimBy'ın üstüne yorumuyla fly fonksiyonunu ve update fonksiyonunu yaz.loop içinde draw()'ın üstüne update() yaz. Çalıştır ve ateş et.Beceriler: Hız ve yerçekimi, Oyun döngüsü