Atölye › Space Invaders Tarzı › 10/21. adım
Yaşayan bir istilacıya değen mermi onu yok etsin ve kendisi de harcansın. İki kutunun üst üste binip binmediğini
söyleyen klasik bir fonksiyon yazıyoruz: overlaps (çakışıyor mu).
```js
function overlaps(a, b) {
return a.x < b.x + b.w && a.x + a.w > b.x && a.y < b.y + b.h && a.y + a.h > b.y
}
for (const bullet of bullets) {
const hit = invaders.find((invader) => invader.alive && overlaps(bullet, invader))
if (hit) {
hit.alive = false
bullet.y = -100 // used up; removed below
}
}
```overlaps(a, b) → dört karşılaştırma, hepsi doğru olmalı: a'nın solu b'nin sağından önce, a'nın sağı b'nin
solundan sonra; üst ve alt için de aynısı.invaders.find((invader) => invader.alive && overlaps(bullet, invader)) → mermiye değen ilk yaşayan istilacı.hit.alive = false → artık ölü: çizilmez, vurulmaz.bullet.y = -100 → mermiyi ekranın üstüne at; hemen alttaki filter onu listeden çıkarır. Döngü sürerken listeden
silmek yerine böyle işaretlemek daha güvenli.alive fonksiyonunun üstüne overlaps fonksiyonunu yaz.update içinde mermileri hareket ettiren satır ile süzen satırın arasına, bir boş satırdan sonra vuruş döngüsünü yaz.Beceriler: Çarpışma tespiti