Atölye › Mario Tarzı Platform › 23/37. adım
Oyuncu bir altına değince altın toplansın. Bunun için iki kutunun üst üste binip binmediğini soracağız.
Kural: iki kutu, her iki eksende de biri öbürü bitmeden başlıyorsa çakışır. Yatayda: A, B'nin sağ kenarından önce başlıyor ve A'nın sağ kenarı B'nin başlangıcından sonra. Dikeyde aynısı.
```js
function overlaps(a, b) {
return a.x < b.x + b.w && a.x + a.w > b.x && a.y < b.y + b.h && a.y + a.h > b.y
}
for (const coin of coins) {
if (!coin.taken && overlaps(player, coin)) {
coin.taken = true
}
}
```a.x < b.x + b.w → A'nın solu, B'nin sağından önce.a.x + a.w > b.x → A'nın sağı, B'nin solundan sonra. İkisi birden: yatayda çakışıyorlar.a.y < b.y + b.h && a.y + a.h > b.y → aynısı dikeyde. Dördü de doğruysa kutular üst üste biner.update içinde: for (const coin of coins) → her altın için; !coin.taken && overlaps(player, coin) → henüz
toplanmamış ve oyuncuya değiyorsa coin.taken = true. Toplanan altın artık çizilmez.// Move along one axis ... yorum satırının üstüne overlaps fonksiyonunu yaz; altında bir boş satır kalsın.update içinde updatePlayer() satırının altına bir boş satır bırak ve altın döngüsünü yaz.Beceriler: Çarpışma tespiti
← Altınlar Say: ekran ve dünya →