Я сделал клон Летающей птицы.Он отлично работает, когда я играю в обычном режиме экрана.(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;
}
}
}