Atölye › Mario Tarzı Platform › 13/37. adım

Duvarlar

Ne yapıyoruz

Kutu şu an duvarların içinden geçiyor. Duvarlar da zemin gibi çalışır: önce yatay hareket et; bir döşemenin içine girdiysen onun yanına geri yapıştır. Sonra, önceki gibi, dikey hareket.

İki ekseni ayrı ayrı ele almak, döşeme çarpışmalarının anahtar hilesidir. İkisini birden hareket ettirip sonra bir çakışma bulsaydın, çarptığın şeyin duvar mı zemin mi olduğunu anlayamazdın; kutu döşemelerin eklem yerlerine takılırdı.

```js
// Move along one axis at a time; if that ends inside a wall, snap back to the wall's edge.
function moveX(body) {
  body.x += body.vx
  if (!overlapsSolid(body)) return false
  if (body.vx > 0) body.x = Math.floor((body.x + body.w - EPS) / TILE) * TILE - body.w
  else body.x = Math.floor(body.x / TILE) * TILE + TILE
  body.vx = 0
  return true
}

  moveX(player)
```

Ne işe yarıyor

Sıra sende

  1. function moveY(body) { satırının üstüne yorumuyla birlikte moveX fonksiyonunu yaz; altında bir boş satır kalsın.
  2. updatePlayer içindeki player.x += player.vx satırını sil; yerine moveX(player) yaz.
  3. Çalıştır ve sağa koş: kutu ilk sütuna çarpıp durmalı.

Beceriler: Çarpışma tespiti

Tüm adımlar

  1. Gökyüzü
  2. Metinden bir bölüm
  3. Döşemeleri çiz
  4. Ne katı?
  5. Kutu bir şeye değiyor mu?
  6. Başlangıcı bul
  7. Oyuncuyu çiz
  8. Yerçekimi
  9. Döşemelere inmek
  10. Hangi tuşlar basılı?
  11. Hızlan
  12. Sürtünme
  13. Duvarlar
  14. Zıpla
  15. Kafanı çarp
  16. Kısa zıplamalar
  17. Birkaç karelik tolerans
  18. Coyote time
  19. Takip eden kamera
  20. Uçlarda dur
  21. Yalnız ekrandakini çiz
  22. Altınlar
  23. Topla
  24. Say: ekran ve dünya
  25. Düşmanlar
  26. Yürüyen düşmanlar
  27. Kenardan düşme
  28. Canlar ve yeniden başlamak
  29. Çukura düşmek
  30. Düşmanlar incitir
  31. Ez!
  32. Ezilen düşman gider
  33. Oyun bitti
  34. Yeniden oyna
  35. Bayrak
  36. Bayrağa ulaş
  37. Kendin yap: zıplama tamponu