Atölye › Bilardo › 28/33. adım

Daha küçük adımlar

Ne yapıyoruz

Bir topa sert ve açılı vurursan yanlış yöne gidebilir. Neden? Güç 16'da top karede 16 piksel ilerler. İki topun değdiğini fark ettiğimizde çoktan birkaç piksel iç içe geçmiş olabilirler; collide'da her şeyi belirleyen merkezler arası çizgi artık ilk değme anındaki çizgi değildir.

Çözüm: her kareyi SUB tane küçük adıma böl. Her adım hızın yalnız 1/SUB'i kadar ilerletir ve çarpışmaları kontrol eder. Hızlı ve sıyırarak bir vuruşta çarpılan topun yön hatası:

karede adım hata (radyan)
1 0.62
4 0.12
8 0.04

Sekiz adım gerçeğe yeterince yakın ve hâlâ ucuz. Sürtünme karede bir kez kalır; toplar yine aynı mesafeyi gider.

```js
const SUB = 8 // physics steps per frame, so fast balls cannot jump through each other

    b.x += b.vx / SUB
    b.y += b.vy / SUB

  for (let i = 0; i < SUB; i++) step()
```

Ne işe yarıyor

Sıra sende

  1. MAX_POWER satırının altına SUB yaz.
  2. step içinde b.x += b.vx ve b.y += b.vy satırlarını / SUB ile böl.
  3. update içindeki step() satırını for (let i = 0; i < SUB; i++) step() yap.
  4. Çalıştır: oyun aynı hissettirir, ama sert vuruşlar artık doğru yöne gider.

Beceriler: Hız ve yerçekimi, Çarpışma tespiti

Tüm adımlar

  1. Oda
  2. Masa
  3. İsteka topu
  4. Topları çiz
  5. Üçgen
  6. Topların numaraları
  7. Nişan çizgisi
  8. Nişanı çevir
  9. Vuruş bir hızdır
  10. Yuvarlan
  11. Sürtünme
  12. Bantlar
  13. Nişan ve yuvarlanma
  14. Yuvarlanırken nişanı gizle
  15. Vuruşları say
  16. Değen toplar
  17. İtişi değiş tokuş et
  18. Altı cep
  19. Cebe girdi
  20. Faul
  21. Kalan toplar
  22. Masayı temizle
  23. Gücü seç
  24. Güç çubuğu
  25. Sapan
  26. Basarak nişan al
  27. Geri çek ve bırak
  28. Daha küçük adımlar
  29. Vuruşu tahmin et
  30. Hayalet topu çiz
  31. Çarpılan top nereye gider
  32. Rekorun
  33. Kendin yap: iki oyuncu