Atölye › Zelda Tarzı Zindan › 6/22. adım

Dokunmatik ped

Ne yapıyoruz

Telefonda sol alt köşedeki soluk daire bir ped: bir kenarını basılı tut, o yöne yürü. Ortadan yana mı aşağı mı daha uzaksa yön o olur. (Başka bir yere dokunmak yakında kılıç sallayacak.)

```js
// Touch: the pad in the corner moves, a tap anywhere else swings the sword.
const PAD = { x: 70, y: 330, r: 60 }
let padDir = null
canvas.addEventListener('pointerdown', (event) => {
  const rect = canvas.getBoundingClientRect()
  const x = ((event.clientX - rect.left) * canvas.width) / rect.width
  const y = ((event.clientY - rect.top) * canvas.height) / rect.height
  const dx = x - PAD.x
  const dy = y - PAD.y
  if (Math.hypot(dx, dy) < PAD.r) padDir = Math.abs(dx) > Math.abs(dy) ? [Math.sign(dx), 0] : [0, Math.sign(dy)]
})
canvas.addEventListener('pointerup', () => {
  padDir = null
})

  let dir = padDir

  // The touch pad, faint, in the corner.
  ctx.strokeStyle = 'rgba(255, 255, 255, 0.25)'
  ctx.lineWidth = 2
  ctx.beginPath()
  ctx.arc(PAD.x, PAD.y, PAD.r, 0, Math.PI * 2)
  ctx.stroke()
```

Ne işe yarıyor

Sıra sende

  1. Tuş dinleyicilerinin altına pedi ve iki dokunma dinleyicisini yaz.
  2. update'te let dir = null satırını let dir = padDir yap.
  3. draw'ın sonuna (ctx.restore()'un altına) ped çizimini yaz. Çalıştır ve pede tıklayıp basılı tut.

Beceriler: Klavye ve fare girdisi

Tüm adımlar

  1. Bir oda
  2. Kahraman
  3. Oyun döngüsü
  4. Yürü
  5. Duvarlar
  6. Dokunmatik ped
  7. Sonraki oda
  8. Kılıç
  9. Düşmanlar
  10. Vur!
  11. Peşine düşüyorlar
  12. Dolaşıyorlar
  13. Ah
  14. Yanıp sönme ve kalpler
  15. Anahtarlar ve kalpler
  16. Hatırlayan dünya
  17. Kilitli kapı
  18. Süre
  19. Oyun bitti
  20. Çıkış merdiveni
  21. En iyi süre
  22. Kendin yap: temizlenen odalar