Atölye › Pinball › 28/42. adım
Palet ışınlanmaz; hedefine doğru döner. Her karede şuna karar veriyoruz:
up açısı, değilse rest açısı.FLIP_SPEED (0.25 radyan). Ama hedefe bundan daha az kaldıysa, yalnız kalan
kadar; böylece hedefi aşmaz, tam üstünde durur.Bu adımda yalnız hızı hesaplıyoruz. Açıyı değiştirmek bir sonraki adımda.
```js
const FLIP_SPEED = 0.25 // radians per frame
for (const f of flippers) {
// Up while the key is held, back down when it is let go, and stop at either end.
const target = pressed[f.key] ? f.up : f.rest
const dir = Math.sign(target - f.angle)
f.speed = Math.abs(target - f.angle) < FLIP_SPEED ? (target - f.angle) : dir * FLIP_SPEED
}
```const FLIP_SPEED = 0.25 → paletin bir karede dönebileceği en büyük açı.pressed[f.key] → köşeli parantezle alan okumak. f.key 'left' ise bu pressed.left ile aynı. Böylece
her palet kendi tuşuna bakar.const target = pressed[f.key] ? f.up : f.rest → tuş basılıysa hedef yukarı, değilse dinlenme açısı.Math.sign(sayı) → sayının işareti: artıysa 1, eksiyse -1, sıfırsa 0. dir hangi yöne döneceğimiz.Math.abs(sayı) → sayının eksisini atar: hedefe ne kadar kaldığı.f.speed = ... < FLIP_SPEED ? (target - f.angle) : dir * FLIP_SPEED → kalan yol bir adımdan azsa hız tam kalan
yol; değilse dir yönünde tam bir adım.Math.PI + 0.45). "Yukarı hep küçük açı" diye
varsaysaydık sağ palet ters dönerdi; dir ile çalışmak iki palette de doğru.const FLIPPER_LENGTH = 62 satırının altına FLIP_SPEED satırını yaz.update içinde flash = flash.map(...) satırının altına, if (state === 'ready') return satırının üstüne
for döngüsünü yaz.Beceriler: Hız ve yerçekimi, Oyun durumları
← Hangi tuşlar basılı? Çevir! →