0

我做了一个 Flappy Bird 克隆。当我在正常屏幕模式下播放时,它工作正常。(1920×1080)。但是,当我在 potrait 模式下玩时,我的 Array 出现“未定义”错误。

我觉得有问题,因为我使用 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;
        }
    }
}
4

0 回答 0