Как продлить фон в LibGdx для нисходящей игры?

Как правильно продлить фон в игре сверху вниз? Я использовал фреймворк LibGdx. Любая идея или учебное пособие для нисходящей игры. Мой фон в формате PNG и экран с разрешением 720x1280. У меня была проблема с расширением фона. Я хочу, чтобы камера следовала за персонажем, а фон расширялся. Как я мог это сделать? Вот скриншот

Вот мой код

Для отображения фона я использовал это

    //background
    Background = new Texture(Gdx.files.internal("floor.png")); //File from assets folder
    Background.setWrap(Texture.TextureWrap.Repeat, Texture.TextureWrap.Repeat);
    bgsprite = new Sprite(Background);

В рендере

 spriteBatch.draw(Background,0,100,0, srcy, Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
    srcy +=3;

Фон прокручивается, но камера не следует за игроком (кошка)

Исходный код для Game Screen http://pastebin.com/Dxfx9f65

Спасибо и заранее любую помощь или предложение высоко ценится.:)

1 ответ

Решение

Используйте два одинаковых текстуры фона. У каждого размера экрана может быть один и тот же файл. Важно, чтобы они стояли вертикально. Перемещение одновременно. Попеременно меняются друг с другом. Образец кода:

объявление:

Texture background1, background2;
SpriteBatch batch;
float yMax, yCoordBg1, yCoordBg2;
final int BACKGROUND_MOVE_SPEED = 100; // pixels per second. Put your value here.

создание:

Background1 = new Texture(Gdx.files.internal("floor.png"));
Background2 = new Texture(Gdx.files.internal("floor.png")); // identical 
yMax = 1280;
yCoordBg1 = yMax*(-1); yCoordBg2 = 0;

в методе render:

yCoordBg1 += BACKGROUND_MOVE_SPEED * Gdx.graphics.getDeltaTime();
yCoordBg2 = yCoordbg1 + yMax;  // We move the background, not the camera
if (yCoordBg1 >= 0) {
    yCoordBg1 = yMax*(-1); yCoordBg2 = 0;
}
batch.begin();
batch.draw(background1, 0, yCoordBg1);
batch.draw(background2, 0, yCoordBg2);
batch.end();

Фон можно сделать в формате jpg - потратит меньше памяти.

Другие вопросы по тегам