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

Wolfenstein Tarzı 3B Labirent: Harita

İlk 3B nişancı oyunlarının yaptığı gibi, düz bir haritadan çizilen 3B bir labirentte yürü. sin ve cos ile açılar, duvar boyunca kaymak, bir ızgarada ışın göndermek (DDA), perspektif, balık gözü düzeltmesi ve gölgelendirme.

Ne yapıyoruz

İlk 3B nişancılar (Wolfenstein 3D) gibi bir 3B labirent yapıyoruz: içinde yürüyüp duvarları perspektifle göreceksin. Sonunda nasıl olacağını Bitmiş hâlini gör ile görebilirsin.

İşin sırrı: dünya aslında düz bir ızgara. Önce bu ızgarayı bir yazı listesi olarak yazıyor ve köşeye küçük bir mini harita olarak çiziyoruz.

```js
const canvas = document.getElementById('game')
const ctx = canvas.getContext('2d')

// # stone wall, 2 brick wall, E the exit (a wall you walk into), . floor.
const MAP = [
  '############',
  '#....#.....#',
  '#.##.#.###.#',
  '#.#..#...#.#',
  '#.#.###2#..#',
  '#.#.....#.##',
  '#.#22#.##..#',
  '#..........#',
  '###.##.#.#.#',
  '#...#..#.#.#',
  '#.#...##.#E#',
  '############',
]
const MINI = 8 // minimap pixels per tile

function draw() {
  // The minimap, seen from above.
  MAP.forEach((line, row) => {
    ;[...line].forEach((ch, col) => {
      ctx.fillStyle = ch === '.' ? 'rgba(15, 23, 42, 0.6)' : ch === 'E' ? '#22c55e' : 'rgba(226, 232, 240, 0.8)'
      ctx.fillRect(col * MINI, row * MINI, MINI, MINI)
    })
  })
}

draw()
```

Ne işe yarıyor

Sıra sende

Satırları yorum satırlarının altına yaz ve Çalıştır'a bas: sol üstte küçük bir labirent görmelisin.

Beceriler: Canvas üzerine çizim, Diziler ve nesneler

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ş