Atölye › Mario Tarzı Platform › 31/37. adım
Bir düşmana değmenin iki sonucu var; fark yalnız yönde:
Kural hoşgörülü: oyuncu düşüyorsa ve ayakları hâlâ düşmanın üst yarısındaysa ezmedir. Oyuncular "üstüne indim"
kararını cömert verir; kural da öyle olmalı. Ezilen düşman alive: false olur ve artık çarpışmaz.
```js
if (line[col] === 'e') enemies.push({ x: x + 2, y: y + 4, w: 28, h: 28, vx: 0, vy: 0, dir: -1, alive: true })
if (!enemy.alive || !overlaps(player, enemy)) continue
// A stomp: falling, with the feet still in the top half of the enemy. Anything else is a hit.
const stomp = player.vy > 0 && player.y + player.h < enemy.y + enemy.h / 2
if (stomp) {
enemy.alive = false
player.vy = JUMP * 0.6
} else {
die()
return
}
```alive: true → her düşman canlı başlar.if (!enemy.alive || !overlaps(player, enemy)) continue → düşman ölüyse veya değmiyorsa geç.const stomp = player.vy > 0 && player.y + player.h < enemy.y + enemy.h / 2 → oyuncu düşüyor (vy > 0) ve
ayakları (y + h) düşmanın ortasından (enemy.y + enemy.h / 2) yukarıda.if (stomp) { → ezme:enemy.alive = false → düşman öldü.player.vy = JUMP * 0.6 → oyuncu zıplamanın %60'ı kadar yukarı sıçrar. O ana tuşa basıyorsan bile sıçrayış
kendiliğinden olur.else { die(); return } → ezme değilse, eskisi gibi incin.loadLevel içindeki düşman nesnesine alive: true ekle (dir: -1'den sonra).update içinde düşman döngüsünün içindeki üç satırı sil; yerine yeni satırları yaz.Beceriler: Çarpışma tespiti, Oyun durumları
← Düşmanlar incitir Ezilen düşman gider →