Atölye › OutRun Tarzı Yarış › 25/44. adım
Eski yarış oyunlarının en akıllıca hilesi: yol aslında hiç kıvrılmıyor. Çizerken her parçayı bir öncekinden biraz daha fazla yana kaydırıyoruz:
x → bu parçanın ne kadar kaydığı,dx → bir sonrakinin ne kadar daha kayacağı; her parçada curve kadar büyür.Bir örnek: curve 2 ise kaymalar 0, 2, 6, 12, 20... diye gider. Her seferinde artan bir miktar eklemek düzgün bir
eğri (parabol) çizer; göz bunu uzaklaşırken kıvrılan bir yol olarak görür. Düzlükte curve 0: kayma artmaz.
```js
// Work out where every segment is on screen, from near to far, bending the road a little more at each curve.
const base = Math.floor(position / SEG)
let x = 0
let dx = 0
const shown = []
for (let i = 0; i < DRAW; i++) {
const index = (base + i) % segments.length
const z = (base + i) * SEG - position
const near = project(x - playerX * ROAD, -CAMERA_HEIGHT, z)
const far = project(x + dx - playerX * ROAD, -CAMERA_HEIGHT, z + SEG)
x += dx
dx += segments[index].curve
if (z > 0) shown.push({ index, near, far })
}
```let x = 0 → şu anki parçanın yana kayması. let, çünkü döngüde değişecek.let dx = 0 → bir sonraki parçanın ne kadar daha kayacağı.project(x - playerX * ROAD, ...) → yakın kenar x kadar yana; project(x + dx - playerX * ROAD, ...) → uzak kenar
x + dx kadar. Böylece parçanın uzak ucu yakın ucundan biraz daha kaymış olur.x += dx → sonraki parça bu parçanın uzak ucundan başlasın.dx += segments[index].curve → kayma artsın. segments[index] listenin index numaralı elemanı; .curve onun kıvrımı.curve 0: dx artmaz, yol gittiği yönde düz devam eder.// Work out where ... yorumunun sonuna , bending the road a little more at each curve ekle (yorum, zorunlu değil).base satırının altına let x = 0 ve let dx = 0 yaz.near satırında -playerX * ROAD'un önüne x yaz: x - playerX * ROAD. far satırında x + dx - playerX * ROAD yap.far satırının altına x += dx ve dx += segments[index].curve satırlarını yaz.Beceriler: Hız ve yerçekimi, Canvas üzerine çizim
← Virajlı bir pist Virajda sıçrama olmasın →