Текстуры Java libGDX отображаются за пределами экрана

avatar
Ali Can Çoban
8 августа 2021 в 16:18
46
0
0

Я пытаюсь создать игру для 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;

Я не хочу случайным образом отображать своих птиц за пределами экрана. Я надеюсь, что вы можете мне помочь, спасибо.

Источник
Tenfour04
10 августа 2021 в 12:30
0

Вместо graphics.getWidth() (и высоты) вы должны использовать камеры viewportWidth и viewportHeight. Это фактические границы представления в координатах вашей игры. И нужно учитывать положение камеры. Например, если камера находится в точках x=0 и y=0, левый край вида будет -camera.viewportWidth / 2f. Но если камера x=viewportWidth/2f, то левый край вида находится в точке x=0.

Ali Can Çoban
10 августа 2021 в 21:15
0

Благодарю вас ! Я попробую @Tenfour04

Ответы (0)