Atölye › Asteroids › 3/41. adım

Nereye bakıyor?

Ne yapıyoruz

Oyun programcılarının her gün kullandığı tek trigonometri bilgisi şu:

a açısındaki yön, (Math.cos(a), Math.sin(a)) ikilisidir.

Math.cos(a) o yönde sağa ne kadar gidildiğini, Math.sin(a) aşağı ne kadar gidildiğini söyler (ikisi de -1 ile 1 arası). Merkezden a yönünde r piksel ötedeki nokta: x + cos(a) * r, y + sin(a) * r.

Geminin burnu merkezden SHIP_R (14) piksel ötede, baktığı yönde. Şimdilik burundan merkeze beyaz bir çizgi çizeceğiz: pusula iğnesi gibi, geminin nereye baktığını gösterir.

```js
const SHIP_R = 14 // the ship's size: distance from its center to its nose

function drawShip() {
  const tip = { x: ship.x + Math.cos(ship.angle) * SHIP_R, y: ship.y + Math.sin(ship.angle) * SHIP_R }
  ctx.beginPath()
  ctx.moveTo(tip.x, tip.y)
  ctx.lineTo(ship.x, ship.y)
  ctx.stroke()
}

  ctx.strokeStyle = 'white'
  ctx.lineWidth = 2
  drawShip()
```

Ne işe yarıyor

Sıra sende

  1. const ctx = ... satırının altındaki boş satırdan sonra SHIP_R satırını yaz; altında bir boş satır kalsın (let ship'ten önce).
  2. function draw() { satırının üstüne drawShip fonksiyonunu yaz; altında bir boş satır kalsın.
  3. draw içinde siyah arka planı boyayan fillRect satırının altına bir boş satır bırakıp üç yeni satırı yaz.
  4. Çalıştır: ortada yukarı doğru kısa beyaz bir çizgi görmelisin.

Beceriler: Hız ve yerçekimi, Canvas üzerine çizim

Tüm adımlar

  1. Kapkara uzay
  2. Gemi nerede?
  3. Nereye bakıyor?
  4. Üçgen gemi
  5. Hangi tuşlar basılı?
  6. Dönmek
  7. Oyun döngüsü
  8. İtki ve kayma
  9. Biraz sürtünme
  10. Hız sınırı
  11. Ekranın çevresinden dolaş
  12. Mermi yapmak
  13. Ateş!
  14. Mermiler uçar
  15. Mermilere ömür
  16. Kaya yapmak
  17. Dört büyük kaya
  18. Kayaları çiz
  19. Pürüzlü kayalar
  20. Sürüklenen kayalar
  21. İki daire ne zaman değer?
  22. Kaya kırmak
  23. Mermi kayayı vurur
  24. Puanlar
  25. Skoru göster
  26. Can kaybetmek
  27. Kaya gemiye çarpar
  28. Canları göster
  29. Saat kaç?
  30. Bir anlık güvenlik
  31. Güvendeyken yanıp sön
  32. Kaya dalgaları
  33. Sonraki dalga
  34. Her dalga daha hızlı
  35. Tek başlangıç fonksiyonu
  36. Oynuyor mu, bitti mi?
  37. Oyun bitti
  38. En iyi skor
  39. OYUN BİTTİ yazısı
  40. Yeniden oyna
  41. Kendin yap: hiperuzay