gpt4 book ai didi

javascript - 使敌人被子弹击中而死亡

转载 作者:行者123 更新时间:2023-12-03 05:12:04 24 4
gpt4 key购买 nike

我正在制作一个javascript游戏,我无法让敌人在被子弹击中时死亡。这是我无法理解的代码部分:

    for(var i=0;i<enemies.length;i++){
ctx.fillRect(enemies[i].x,enemies[i].y,30,100);

if(player.x+player.width>enemies[i].x && player.x<enemies[i].x+30 && player.y+player.height>enemies[i].y && player.y<enemies[i].y+100){
document.location.reload();
}


}

for (var b=0;b<bullets.length;b++){
ctx.beginPath();
ctx.arc(bullets[b].x,bullets[b].y,2,0,Math.PI*2);
ctx.fill();
bullets[b].x += bullets[b].dx;

if(bullets[b].x>enemies[i].x && bullets[b].x<enemies[i].x+enemies[i].width && bullets[b].y>enemies[i].y && bullets[b].y<enemies[i].y+enemies[i].height){
enemies.splice(i,1);
}

}

所以,我知道问题是它无法读取敌人[i]的属性“x”,因为我没有把它放在敌人的for循环中,但如果我把它放在那里,它就可以' t 读取项目符号的属性“x”[b]。我已经被困在这个问题上两天了,搜索了我能找到的所有东西,但没有找到任何有用的东西。我将不胜感激任何帮助...提前致谢!

最佳答案

您想要的是检查所有敌人的每颗子弹。

这是使用嵌套循环完成的:

for (var b=0;b<bullets.length;b++){
ctx.beginPath();
ctx.arc(bullets[b].x,bullets[b].y,2,0,Math.PI*2);
ctx.fill();
bullets[b].x += bullets[b].dx;
for (var j=ennemies.length; j-- >0;) {
if(bullets[b].x>enemies[j].x && bullets[b].x<enemies[j].x+enemies[j].width && bullets[b].y>enemies[j].y && bullets[b].y<enemies[j].y+enemies[j].height){
enemies.splice(j,1);
}
}
}

注意:在这个例子中,我以相反的顺序循环遍历敌人,以避免拼接时错过敌人。

关于javascript - 使敌人被子弹击中而死亡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41765775/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com