我首先尝试了一个 forEach 循环来从数组中删除项目,但后来才知道你不应该这样做。所以我试着用一个普通的 for 循环来做一个。这是循环遍历包含子弹的数组,并在它们超出游戏区域时将其删除。
for (i = 0; i < playerBullets.length; i++) {
console.log(playerBullets[i].x);
console.log(playerBullets[i]);
if (playerBullets[i].x > 800 || playerBullets[i].x < 0 || playerBullets[i].y > 600 || playerBullets[i].y < 0 ) {
playerBullets.splice(i);
}
}
控制台正确显示完整的 [i],并显示数组所有内容的列表。但是,[i].x 控制台日志只显示一个值,而不是数组中每个对象的“x”值。
然后,一旦第一颗子弹出界,所有子弹就会消失。最令人沮丧,并且对于杀死僵尸非常无效。
我还尝试通过循环向后循环,这似乎是推荐的方式,但它告诉我 i 未定义。
有任何想法吗?我觉得我犯了一个非常简单的错误,因为我使用的结构与教程网站上的代码相同,所以它“应该工作”。
谢谢!