Atölye › Wolfenstein Tarzı 3B Labirent › 6/18. adım
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
}
```Math.floor(2.7) → 2: bir konumdan kare numarası. Satır y'den, sütun x'ten: MAP[satır][sütun].[[-RADIUS, -RADIUS], ...] → dört köşenin ortadan uzaklıkları: sol üst, sağ üst, sol alt, sağ alt.const [cx, cy] of ... → her ikiliyi iki değişkene açar.'.') dışında bir şeyin üstündeyse true: bu nokta kapalı. Çıkış E de duvar sayılır.MINI satırının üstüne RADIUS yaz.move fonksiyonunun üstüne tileAt ve yorum satırıyla birlikte blocked yaz. Çalıştır.Beceriler: Çarpışma tespiti, Fonksiyonlar
← Yürü Duvarda dur, boyunca kay →