Я делаю игру, в которой вы управляете своим персонажем с помощью клавиш со стрелками и атакуете с помощью «А». Моя проблема в том, что у атаки нет задержки, поэтому, когда я удерживаю «А», здоровье врага быстро истощается. Как добавить задержку? Я попытался добавить задержку, вот мой код:
var DELAY = 2;
var cooldown = 0;
function update(time) {
// UP
if (38 in keysDown) {
player.y -= player.speed * time;
}
// DOWN
if (40 in keysDown) {
player.y += player.speed * time;
}
// LEFT
if (37 in keysDown) {
player.x -= player.speed * time;
}
// RIGHT
if (39 in keysDown) {
player.x += player.speed * time;
}
// 'A'
if(65 in keysDown) {
player.attacking = true;
cooldown -= time;
}
else
player.attacking = false;
// Collision
if( (player.x + pImage.width-5) >= monster.x &&
(player.x + pImage.width-5) < monster.x + enImage.width &&
player.y >= monster.y && player.y < (monster.y + enImage.height) &&
player.attacking)
{
if(cooldown <= 0) {
monster.hp -= player.dmg;
cooldown = DELAY;
}
if(monster.hp <= 0) {
relocEn();
}
}
}
Проблема в том, что время восстановления считается только тогда, когда я держу «А», и сбрасывается только тогда, когда игрок касается монстра. Я хочу что-то вроде того, когда я нажимаю «A», таймер перезарядки отключается. Кроме того, я хочу, чтобы спрайт (в атакующем состоянии) согласился с задержкой и вернулся в «стоящее» состояние. заранее спасибо