Как продлить фон в 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 - потратит меньше памяти.