Atölye › Wolfenstein Tarzı 3B Labirent › 13/18. adım
Bütün duvarlar aynı gri; köşeler kayboluyor. Her duvar türü kendi rengini alsın; üst/alt yüzünden vurulan duvarlar biraz koyu olsun ve her şey uzaklıkla sönükleşsin. Labirentin katı görünmesi için bu kadarı yeter.
```js
const COLORS = { '#': [148, 163, 184], 2: [185, 90, 60], E: [34, 197, 94] }
function shade(hit, dist) {
// Walls facing north or south are a little darker, and everything fades with distance.
const light = (hit.side === 'y' ? 0.7 : 1) * Math.max(0.25, 1 - dist / 12)
const [r, g, b] = COLORS[hit.tile]
return 'rgb(' + Math.round(r * light) + ', ' + Math.round(g * light) + ', ' + Math.round(b * light) + ')'
}
ctx.fillStyle = shade(hit, dist)
```COLORS → her duvar türünün kırmızı, yeşil, mavi değerleri: taş gri, tuğla kızıl, çıkış yeşil.light → ışık oranı. side === 'y' (üst/alt yüz) ise 0.7 ile çarpılır: iki yüz birbirinden ayrılır, köşeler
görünür.Math.max(0.25, 1 - dist / 12) → uzaklık büyüdükçe azalır; 12 karede sıfıra inerdi ama 0.25'in altına inmez.const [r, g, b] = COLORS[hit.tile] → üç sayıyı üç değişkene açar.'rgb(105, 115, 130)' gibi bir renk yazısı kurulur.FOV satırının üstüne COLORS yaz.draw fonksiyonunun üstüne shade fonksiyonunu yaz.'#94a3b8' yerine shade(hit, dist) yaz. Çalıştır.Beceriler: Canvas üzerine çizim