gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 19:06:05 25 4
gpt4 key购买 nike

我正在制作一款游戏,您可以使用方向键控制 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/

25 4 0
文章推荐: JavaScript:onclick 使用 iframe 删除 div
文章推荐: javascript - Mobiscroll onBeforeShow,设置值
文章推荐: Javascript:匹配变量名称并应用于匹配的变量
文章推荐: php - 如何通过表单发送
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com