我做了一个 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;
}
}
}