Пуля космических захватчиков не появляется при нажатии клавиши - PullRequest
0 голосов
/ 02 ноября 2018

В моей игре космических захватчиков есть функция shootAliens (); который должен создать пулю и выстрелить в захватчиков при нажатии пробела. Но это не тот случай, когда при нажатии пробела ничего не происходит. В объектах игрока также есть функция выстрела, которая обновляет положение пули каждые 10 мс. Я точно не знаю, почему пуля не появляется и не движется.

Это функция, которая стреляет в инопланетян:

function shootAliens(event) {
  if(event.keyCode == 32) {
    player.shoot();
  }
}

Это объект игрока:

var player = {
  x: 475,
  y: 590,
  speedX: 0,
  shoot: function() {
    var b = new bullet(this.x+40);
    b.interval = setInterval(function(){
      b.update();
    },10);
  }
};

Это функция маркера:

function bullet(x) {
  this.x = x;
  this.y = 590;
  this.interval = 0;
  this.update = function() {
    context.clearRect(this.x, this.y, 5, 10);
    for (var i = 0; i < enemies.length; i++) {
      if (this.x > enemies[i].x && this.x < enemies[i].x+45 && this.y > enemies[i].y && this.y < enemies[i].y+30) {
        score += enemies[i].score;
        updateScore();
        clearInterval(this.interval);
      }
    }

    this.y -= 10;
    context.fillStyle = "blue";
    context.fillRect(this.x, this.y, 5, 10);
  }
}

Я вызвал функцию shootAliens в моем основном игровом цикле:

function gameLoop() {
  window.addEventListener("keydown",shootAliens,event);
}
...