Javascript 如何使用侧滚游戏中的方法从数组中移除元素?
我正在制作一个flappy bird游戏,玩家必须从一个数组中捕获所有单词。现在,我正在使用shift()方法删除元素,如下所示:Javascript 如何使用侧滚游戏中的方法从数组中移除元素?,javascript,arrays,loops,methods,Javascript,Arrays,Loops,Methods,我正在制作一个flappy bird游戏,玩家必须从一个数组中捕获所有单词。现在,我正在使用shift()方法删除元素,如下所示: if ( bX + bird.width >= words[i].x && bX + bird.width <= words[i].x + 40 && bY+bird.height >= words[i].y && bY+bird.height <
if ( bX + bird.width >= words[i].x
&& bX + bird.width <= words[i].x + 40
&& bY+bird.height >= words[i].y
&& bY+bird.height <= words[i].y + 40){
words.shift();
};
if(bX+bird.width>=字[i].x
&&bX+bird.width=字[i].y
&&bY+bird.heightif(words[i].x您已经在碰撞检测中使用变量i
。您可以使用它来选择要检查的单词
另一方面,您使用了words.shift()
,它总是删除数组的第一个字
只要你的鸟总是在最左边,并且所有的单词在x轴上都有一个合理的距离,这可能会起作用
但如果您想更一般地进行测试,您可以在循环中测试所有可能的单词,并删除所有被击中或离开屏幕的单词
有多种方法可以从数组中删除项。例如,您可以使用words.splice(i,1)
删除words[i]
。如果在查找中使用此方法,请记住所有后续索引都会更改1
for (let i = 0; i < words.length; ++i) {
if (birdCollidesWithWord(words[i]) || wordWentOutOfScreen(words[i])) {
words.splice(i, 1);
i -= 1;
}
}
for(设i=0;i
if (words[i].x <= 0){
words.shift();
}
for (let i = 0; i < words.length; ++i) {
if (birdCollidesWithWord(words[i]) || wordWentOutOfScreen(words[i])) {
words.splice(i, 1);
i -= 1;
}
}