Atölye › Zelda Tarzı Zindan › 13/22. adım
3 kalbin var. Sana değen düşman bir tane götürsün. Sonra 60 kare boyunca güvendesin; sen ve düşman birbirinden sekersiniz, yoksa aynı düşman üst üste vururdu.
```js
let hearts
let hurt // frames the player cannot be hurt again
hearts = 3
hurt = 0
if (hurt > 0) hurt -= 1
if (e.hp > 0 && hurt === 0 && overlap(box(e), box(player))) {
hearts -= 1
hurt = 60
// Both bounce apart, so an enemy cannot stay stuck on top of you.
const ax = Math.sign(player.x - e.x) || 1
const ay = Math.sign(player.y - e.y)
const horizontal = Math.abs(player.x - e.x) >= Math.abs(player.y - e.y)
for (let i = 0; i < 6; i++) move(player, horizontal ? ax * 4 : 0, horizontal ? 0 : ay * 4)
e.knock = 10
e.kx = horizontal ? -ax * 3 : 0
e.ky = horizontal ? 0 : -ay * 3
}
```hurt → 60'tan geri sayar; 0'dan büyükken dokunuşlar bir şey yapmaz.e.hp > 0 → az önce kılıçla yenilen düşman vurmasın.Math.sign(player.x - e.x) || 1 → düşmanın hangi tarafındasın: −1 ya da 1; tam üstündeysen || 1 sağı seçer.horizontal → yana mı daha uzaksınız: öyleyse yana, değilse dikey sekme.move ile 24 piksel it: büyük tek bir adım duvarın içinden geçebilirdi.e.knock = 10).const held satırının üstüne hearts ve hurt, reset'te swing = 0 satırının üstüne iki satır yaz.update'in en üstüne hurt geri sayımını ve bir boş satır yaz.Beceriler: Çarpışma tespiti, Oyun durumları
← Dolaşıyorlar Yanıp sönme ve kalpler →