Массив возвращает ошибку, когда я играю в портретном режиме - PullRequest
0 голосов
/ 19 февраля 2019

Я сделал клон Летающей птицы.Он отлично работает, когда я играю в обычном режиме экрана.(1920 × 1080).Тем не менее, когда я играю в режиме Potrait, мой массив получает ошибку «undefined».

Я решил, что есть проблема, так как я использую windowHeight и windowWidth.Я делаю это в рамках p5.

this.hits = function (bird) {
         if (bird.y < this.top || bird.y > windowHeight - this.bottom) {
             if (bird.x > this.x && bird.x < this.x + this.w) {
                 return true;
             }
         }
         return false;
  }

Вот используемые переменные: (не фактический код)

Птица:

bird.y = windowHeight/2;
bird.x = windowWidth*0.2;

Трубы:

 var pipeSpace = random(250,600);
    var centerY = random(0,windowHeight/3.5);
    pipes.top = centerY - pipeSpace/2;
    pipes.bottom = windowHeight - centerY - (centerY + pipeSpace/2);
    pipes.x  = windowWidth*1.5; (this is the x  position(starting position) of the pipes)
    this.w = 40; (this is the width of the pipes)

Эта функция вызывается каждый кадр, чтобы увидеть, происходит ли столкновение, но после того, как я прохожу первую «трубу», игра прерывается и выдает ошибку, указанную выше.

Редактировать: Ошибка: pipes[i] is undefined

Это та часть, где это происходит: на самом деле больше кода, но это не имеет никакого отношения к моей проблеме.

var pipes = [];

function setup() {
  bird = new Bird();
  pipes.push(new Pipe());

}
function draw(){
    for (var i = pipes.length-1; i >= 0; i--){
      if(pipes[i].hits(bird)){
          gameOver = true;
        }
    }
}
...