Atölye › Zelda Tarzı Zindan › 10/22. adım

Vur!

Ne yapıyoruz

Kılıç değdiği düşmana vursun: düşman can kaybetsin ve geri savrulsun; 10 kare boyunca baktığın yönde karede 4 piksel kaysın. Canı kalmayan düşman yok olsun.

```js
const overlap = (a, b) => a.x < b.x + b.w && a.x + a.w > b.x && a.y < b.y + b.h && a.y + a.h > b.y
const box = (body) => ({ x: body.x, y: body.y, w: SIZE, h: SIZE })

  const sword = swing > 0 ? swordBox() : null

  for (const e of enemies) {
    if (e.knock > 0) {
      // Knocked back: slide away from the sword for a few frames.
      e.knock -= 1
      move(e, e.kx, e.ky)
    }
    if (sword && e.knock === 0 && overlap(sword, box(e))) {
      e.hp -= 1
      e.knock = 10
      e.kx = player.dir[0] * 4
      e.ky = player.dir[1] * 4
    }
  }
  enemies = enemies.filter((e) => e.hp > 0)
```

Ne işe yarıyor

Sıra sende

  1. update'in üstüne overlap ve box yaz.
  2. update'in sonuna, geri sayım satırının altına sword satırını ve düşman döngüsünü yaz. Çalıştır ve bir düşmana vur.

Beceriler: Çarpışma tespiti

Tüm adımlar

  1. Bir oda
  2. Kahraman
  3. Oyun döngüsü
  4. Yürü
  5. Duvarlar
  6. Dokunmatik ped
  7. Sonraki oda
  8. Kılıç
  9. Düşmanlar
  10. Vur!
  11. Peşine düşüyorlar
  12. Dolaşıyorlar
  13. Ah
  14. Yanıp sönme ve kalpler
  15. Anahtarlar ve kalpler
  16. Hatırlayan dünya
  17. Kilitli kapı
  18. Süre
  19. Oyun bitti
  20. Çıkış merdiveni
  21. En iyi süre
  22. Kendin yap: temizlenen odalar