Atölye › Pinball › 30/42. adım

Hareket eden duvar

Ne yapıyoruz

Dene: paletin üstünde duran topa palet kalkınca top neredeyse kıpırdamıyor. Neden? Sekme hesabı yalnız topun hızına bakıyor; top ise duruyordu. Palet onu yolundan itiyor ama fırlatmıyor.

Çözüm göreli hız: sekmeyi "topun hızı eksi duvarın o noktadaki hızı"na göre yapmak. Yürüyen bir otobüste topa vurmak gibi düşün: önemli olan topun otobüse göre hızıdır. Duvar topa doğru hızla geliyorsa, top dursa bile duvara göre hızla çarpıyor demektir ve hızla seker.

hitSegment'e isteğe bağlı altıncı bir parametre ekliyoruz: surface (yüzey). Bu bir fonksiyon: ona bir nokta verirsin, sana yüzeyin o noktadaki hızını söyler. Duvarlar onu vermez (kıpırdamazlar); paletler bir sonraki adımda verecek.

```js
// Push the ball out of a segment and bounce it. `surface` is how fast the segment itself moves at that point:
// the bounce works on the speed of the ball relative to the surface, which is how a flipper throws the ball.
function hitSegment(x1, y1, x2, y2, bounce, surface) {

  const sx = surface ? surface(px, py).x : 0
  const sy = surface ? surface(px, py).y : 0
  const vn = (ball.vx - sx) * nx + (ball.vy - sy) * ny
```

Ne işe yarıyor

Sıra sende

  1. hitSegment'in üstündeki tek satırlık yorumu koddaki iki satırla değiştir; bounce parametresinin arkasına , surface ekle.
  2. hitSegment içindeki const vn = ball.vx * nx + ball.vy * ny satırını sil; yerine koddaki üç satırı yaz. (hitBumper içindeki aynı görünen satıra dokunma.)
  3. Çalıştır: oyun aynı görünür; kontroller yeni parametreyi deniyor.

Beceriler: Hız ve yerçekimi, Fonksiyonlar

Tüm adımlar

  1. Masayı boya
  2. Bir duvar çiz
  3. Duvar listesi
  4. Oyun döngüsü
  5. Kanalda bir top
  6. Topu çiz
  7. Hıza göre ilerle
  8. Boşlukla fırlat
  9. Yerçekimi
  10. Top duvara değiyor mu?
  11. Topu dışarı it
  12. Duvardan sek
  13. Küçük adımlar ve hız sınırı
  14. Hazır mı, oyunda mı
  15. Sıradaki top
  16. Üç tampon
  17. Top tampona çarpıyor
  18. Tampon tekmeler
  19. Skor ve yeni başlangıç
  20. Her vuruşa puan
  21. Hangi tampon vuruldu, hatırla
  22. Yak
  23. Bir an yanık, bir kez puan
  24. İki palet
  25. Uç nerede?
  26. Paletler topu durdurur
  27. Hangi tuşlar basılı?
  28. Hangi yöne dönmeli
  29. Çevir!
  30. Hareket eden duvar
  31. Palet fırlatır
  32. Üç top
  33. Kalan toplar ve oyun sonu
  34. Yeniden oyna
  35. En iyi skoru hatırla
  36. Bırakınca fırlat
  37. Yayı ger
  38. Yayı göster
  39. İki başparmak
  40. Parmakla ger
  41. Dokun, yeniden oyna
  42. Kendin yap: sapanlar