你好stackoverflowians~!
是我,一个孤独的程序员,在我的足迹中遇到了问题。您会看到问题出在这段代码上。
for(var a = 0; a < bullets.length; a++) {
for(var b = 0; b < pigs.length; b++) {
if(bullets[a].y < 300) {
if(bullets[a].x > pigs[b].x && bullets[a].x < pigs[b].x + pigImage.width &&
bullets[a].y > pigs[b].y && bullets[a].y < pigs[b].y + pigImage.height) {
pigExplode(pigs[b].x);
bullets.pop(a);
pigs.pop(b);
player.kills++;
}
}
}
}
问题如下。我有 2 个数组,其中包含对象;一组 Bullets 包含所有子弹对象和一组 Pigs 包含所有猪(在我的游戏中射击的目标)(但是,我不鼓励以任何方式射击猪)
现在我要做的是查看阵列中的一颗子弹是否击中阵列中的一只猪,我已将猪和子弹添加到阵列中,如下所示:
bullets.push(new Bullet());
pigs.push(new Pig());
当我试图删除这个数组中的某个对象时,狗屎南下,假设我有 5 头猪。
那将是0、1、2、3、4。如果我要射猪2。4会死。如果我要射猪 1. 4 会死。如果我要射猪4。4会死。
因此,无论我向谁开枪,它总是会删除最后一头猪。我遇到这个问题的错误是:
Uncaught TypeError: Cannot read property 'y' of undefined
它指示的行是这样的:
if(bullets[a].y < 300) {
这是在双重 for 循环中,我检查是否有子弹击中猪。但是,该错误仅在我击中不是阵列中最后一个的猪时才会弹出。
有谁知道我的代码发生了什么?我已经处理了好几天了,我不知道我做错了什么。提前致谢!