javascript - (游戏编程)如何在攻击之间添加延迟?

标签 javascript time delay timedelay

我正在制作一款游戏,您可以使用方向键控制 Angular 色并使用“A”进行攻击。我的问题是攻击没有延迟,所以当我按住“A”时,敌人的生命值会迅速耗尽。如何添加延迟?我尝试添加延迟,这是我的代码:

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”时才计算,并且仅在玩家接触怪物时才重置。我想要像当我按“A”时冷却计时器启动的东西。另外,我希望 Sprite (处于攻击状态)随着延迟而回到“站立”状态。提前致谢

最佳答案

这就是我要做的:

我会为上次攻击的时间创建一个变量,并将与攻击相关的所有代码移至另一个函数。我假设时间以毫秒为单位,因此您可能希望延迟达到数百。

var DELAY = 400; //Change this to a higher value if it's not long enough.
var timeSinceLastAttack = -400; // The opposite of the DELAY if you want to attack at the start. 

function update(time) {

...

// 'A'
if(65 in keysDown 
    && time > (timeSinceLastAttack + DELAY) ) {
    player.attack();
    timeSinceLastAttack = time;
} 

然后在你的attack()函数中你可以进行碰撞检测。

关于javascript - (游戏编程)如何在攻击之间添加延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14290424/

相关文章:

c++ - gmtime_r 和 gmtime_s 的区别

php - PHP 中的 fopen 文件锁定(读取器/写入器类型的情况)

jQuery - 防止鼠标快速移动导致悬停功能排队

cocos2d-iphone - 更改 CCAnimation 中的延迟

javascript - 如何使用javascript或reactjs压缩存储在浏览器中的BLOB图像并上传到服务器

JavaScript Promise 解析和拒绝函数调用序列

c - 为什么/如何在 Segger JTAG ICE 下为微 Controller 平台设置时间?

javascript - 根据先前的日期创建日期并添加到其中

javascript - WordPress 点击时显示子导航

javascript - GWT native 函数 - 每个字符串的引用