我试图让所有敌人同时向玩家射击子弹。我的代码适用于一次射击一个敌人,但我想要做的就是让它们同时发射。
为了简洁起见,我使用这个简单的条件来触发fire_bullets
函数:if (player.x > thisEnemy.x) { //fire bullets
。我打算做的是,玩家向右移动越远,敌人开始射击子弹的次数越多。问题是条件只适用于阵列中的第一个敌人,而其他人只是不会发射任何子弹。你可以在这里看到演示:
https://jsfiddle.net/Lau1989/796xr7vg/
这是我的fire_bullets()
功能:
function fire_bullets(thisEnemy) {
var HTMLbullets = document.querySelectorAll('.HTMLbullets');
for (var b = 0; b < HTMLbullets.length; b++) {
var time = new Date().getTime()/1000 - startTime;
if (bullets[b].isOut && time > 0.5) {
if (player.x > thisEnemy.x) {
bullets[b] = bullets_pool(thisEnemy.x, thisEnemy.y);
}
startTime = new Date().getTime()/1000;
}
if (!bullets[b].isOut) {
bullets[b].y -= 4;
if (bullets[b].y <= 50) { //check if bullet is out of range and recycle it
bullets[b].isOut = true;
var thisBullet = bullets.splice(b, 1)[b];
thisBullet.x = -100;
bullets.push(thisBullet);
}
}
HTMLbullets[b].style.left = bullets[b].x +"px";
HTMLbullets[b].style.top = bullets[b].y +"px";
}
}
我最近的尝试是将fire_bullets
函数添加为每个敌方对象的属性,然后在x位置低于玩家x位置时调用它,但它只会触发最后一个敌人被触发它的子弹,而其他的子弹停止射击他们的。
我应该如何让所有敌人同时向玩家发射子弹?考虑到每个级别经常有几十个敌人同时发射子弹,是否有一个很好的性能解决方案呢?