Я пытаюсь создать игру для Android с помощью libGDX. У меня игра в портретном режиме. Текстура птицы рендерится через цикл for со случайным смещением. Иногда мои птицы рендерятся за пределы экрана. Вот мой код для рендеринга:
if (birdX>Gdx.graphics.getWidth()) {
birdY = Gdx.graphics.getHeight()/2;
birdX = Gdx.graphics.getWidth()-birdX-numberOfBirds*distanceBird;
bird2X = bird2X + numberOfBirds*distanceBird+Gdx.graphics.getWidth();
birdOffSet1[i] = (random.nextFloat()-0.5f)*(Gdx.graphics.getHeight()/2-200);
birdOffSet2[i] = (random.nextFloat()-0.5f)*(Gdx.graphics.getHeight()/2-200);
} else {
birdX = birdX + cloudVelocity + 2;
bird2X = bird2X - cloudVelocity -2;
}
batch.draw(bird1,birdX,birdY+birdOffSet1[i],Gdx.graphics.getWidth()/8,Gdx.graphics.getHeight()/18);
batch.draw(bird2,bird2X,birdY+birdOffSet2[i],Gdx.graphics.getWidth()/8,Gdx.graphics.getHeight()/18);
}
Значения переменных:
numberOfBirds равно 1,
distanceBird равно 0
float[] birdOffSet1 = new float[numberOfBirds];
float[] birdOffSet2 = new float[numberOfBirds];
плавающая птицаX=-100;
плавающая птицаY=0;
плавающая птица2X=1100;
Я не хочу случайным образом отображать своих птиц за пределами экрана. Я надеюсь, что вы можете мне помочь, спасибо.
Вместо
graphics.getWidth()
(и высоты) вы должны использовать камерыviewportWidth
иviewportHeight
. Это фактические границы представления в координатах вашей игры. И нужно учитывать положение камеры. Например, если камера находится в точках x=0 и y=0, левый край вида будет-camera.viewportWidth / 2f
. Но если камераx=viewportWidth/2f
, то левый край вида находится в точке x=0.Благодарю вас ! Я попробую @Tenfour04