处理同时发射子弹的多个敌人

时间:2016-12-20 05:59:22

标签: javascript function

我试图让所有敌人同时向玩家射击子弹。我的代码适用于一次射击一个敌人,但我想要做的就是让它们同时发射。

为了简洁起见,我使用这个简单的条件来触发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位置时调用它,但它只会触发最后一个敌人被触发它的子弹,而其他的子弹停止射击他们的。

我应该如何让所有敌人同时向玩家发射子弹?考虑到每个级别经常有几十个敌人同时发射子弹,是否有一个很好的性能解决方案呢?

0 个答案:

没有答案
相关问题