Atölye › Puzzle Bobble Tarzı Balon Atıcı › 15/31. adım
Balon karede 12 piksel gidiyor. Tek adımda bu kadar ilerleyince dar bir aralığın üstünden atlayabilir ya da bir balonun içine gömüldükten sonra fark edilebilir; o zaman yanlış hücreye oturur.
Çözüm: her kareyi üç küçük adıma böl. Her adım 4 piksel ilerler ve değmeyi kontrol eder. Karede yine 12 piksel gider, ama çok daha dikkatli.
```js
// A few small steps per frame, so the bubble cannot jump past a gap.
for (let i = 0; i < 3 && shot; i++) {
shot.x += shot.vx / 3
shot.y += shot.vy / 3
if (shot.x < R || shot.x > canvas.width - R) {
shot.vx = -shot.vx // bounce off the side walls
shot.x = Math.max(R, Math.min(canvas.width - R, shot.x))
}
if (touches(shot.x, shot.y)) {
const cell = snap(shot.x, shot.y)
attach(cell.r, cell.c, shot.color)
shot = null
}
}
```for (let i = 0; i < 3 && shot; i++) → üç kez dön; ama && shot sayesinde balon yapıştığı anda (shot = null) dur.
Yoksa bir sonraki turda shot.x diye null'ın içine bakmaya çalışıp hata verirdi.shot.x += shot.vx / 3, shot.y += shot.vy / 3 → her adım hızın üçte biri: 4 piksel.update içinde if (!shot) return satırının altına yorum satırını ve for (let i = 0; i < 3 && shot; i++) { yaz.} ekle.shot.vx ve shot.vy eklemelerini / 3 ile böl. Çalıştır: oyun aynı hissettirir, ama atışlar daha isabetli.Beceriler: Hız ve yerçekimi, Çarpışma tespiti