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

Işın: duvara kadar yürü

Ne yapıyoruz

Şimdi ışın yürüsün: her seferinde hangi ızgara çizgisi daha yakınsa onu geçip yeni bir kareye girsin. O kare zemin değilse duvarı bulduk. Bu yönteme DDA denir. castRay artık asıl cevabı döndürüyor: duvar ne kadar uzakta, hangi tür çizgiyi geçerek çarptı, duvarın türü ve tam çarpma noktası.

```js
// Walk the grid line by line (DDA) until the ray enters a wall tile.

  while (true) {
    let dist
    let side
    if (nextX < nextY) {
      dist = nextX
      nextX += deltaX
      col += stepX
      side = 'x'
    } else {
      dist = nextY
      nextY += deltaY
      row += stepY
      side = 'y'
    }
    const tile = MAP[row][col]
    if (tile !== '.') return { dist, side, tile, x: player.x + dx * dist, y: player.y + dy * dist }
  }
```

Ne işe yarıyor

Sıra sende

  1. castRay'in üstüne yorum satırını yaz.
  2. return { deltaX, ... } satırını sil; yerine while döngüsünü yaz. Çalıştır.

Beceriler: Hız ve yerçekimi, Döngüler

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ş