2017-01-08 2 views
0

Я новичок в libgdx, поэтому, пожалуйста, несите меня. Я пытаюсь создать 2D-бегущую игру и пытаюсь реализовать прокручивающийся фон. До сих пор мне удалось получить фон для прокрутки, но через некоторое время он замедляется и становится изменчивым. Вот как я реализовал его:libGDX прокрутка фона становится неспокойным через некоторое время

в моем методе создания

bg = new Texture(Gdx.files.internal("bg1.png")); 
bg.setWrap(Texture.TextureWrap.Repeat, Texture.TextureWrap.Repeat); 

и в моем методе визуализации у меня есть

try { 
    sourceX += 15; 
} catch (Exception e){ 
    sourceX=0; 
} 
game.batch.draw(bg, 0, 0, sourceX, 0, Gdx.graphics.getWidth(),Gdx.graphics.getHeight()); 

Это похоже на работу, но через некоторое время он становится изменчивым. Мы ценим любые предложения.

+0

Что вы подразумеваете под изменчивым? капли fps? проверьте свои фреймворки с помощью 'FPSLogger', возможно, у вас также есть утечка памяти – Moira

+1

, почему у вас есть' sourceX + = 15' в блоке try? который не может выбросить исключение – Moira

+0

, он начинает заикаться или отставать. это уже не будет плавное переключение – tashtoons

ответ

1

Может быть точность с плавающей точкой снижается по мере того, как ваши числа достигают более высоких порядков. Поддерживайте свою точность, держа его на низком диапазоне:

sourceX = (sourceX + 15f) % bg.getWidth(); 

Однако, вы также должны включать в себя время дельта и скорость, если вы хотите постоянную скорость, то же самое на всех устройствах:

sourceX = (sourceX + Gdx.graphics.getDeltaTime() * 900f) % bg.getWidth(); 

Убедитесь, что sourceX - это поплавок, а не int.

+0

Спасибо, это сработало – tashtoons

Смежные вопросы