Atölye › Wolfenstein Tarzı 3B Labirent › 6/18. adım

Duvar mı?

Ne yapıyoruz

Duvarlarda durmak için iki soru lazım. tileAt → bir nokta hangi karenin üstünde? blocked → oyuncu bu noktada dursa bir duvarın içinde olur mu? Oyuncu bir nokta değil, ortasından her yöne 0.2 kare uzanan küçük bir kare; o yüzden dört köşesine bakıyoruz. Bu adımda yalnız soruları yazıyoruz; kullanmak sonraki adımda.

```js
const RADIUS = 0.2 // how close the player can get to a wall

function tileAt(x, y) {
  return MAP[Math.floor(y)][Math.floor(x)]
}

// Is any corner of the player's little square inside a wall?
function blocked(x, y) {
  for (const [cx, cy] of [[-RADIUS, -RADIUS], [RADIUS, -RADIUS], [-RADIUS, RADIUS], [RADIUS, RADIUS]]) {
    if (tileAt(x + cx, y + cy) !== '.') return true
  }
  return false
}
```

Ne işe yarıyor

Sıra sende

  1. MINI satırının üstüne RADIUS yaz.
  2. move fonksiyonunun üstüne tileAt ve yorum satırıyla birlikte blocked yaz. Çalıştır.

Beceriler: Çarpışma tespiti, Fonksiyonlar

Tüm adımlar

  1. Harita
  2. Oyuncu
  3. Tavan, zemin ve döngü
  4. Dön
  5. Yürü
  6. Duvar mı?
  7. Duvarda dur, boyunca kay
  8. Işın: nereden başlıyor
  9. Işın: ızgara çizgileri
  10. Işın: duvara kadar yürü
  11. 3B görünüm
  12. Balık gözü yok
  13. Işık ve gölge
  14. Süre
  15. Kaçış!
  16. En iyi süre
  17. Dokunmatik kontrol
  18. Kendin yap: koş