Это общая проблема, когда ваш работает игру на нескольких устройствах. Потому что ваша игра работает в разных пропорциях на разных экранах. его обычно называют проблемой с несколькими экранами. Чтобы решить эту проблему, libgdx предоставляет класс класса, называемый viewPort. В основном вы можете видеть три видоискателя. 1) Заполнить viewPort. 2) Подходит для просмотра. 3) стрейч viewport. Для получения дополнительной информации вы можете ознакомиться с документацией libgdx. Здесь я размещаю некоторый пример кода, который может решить ваши проблемы с несколькими экранами.
public class myGame extends ApplicationAdapter {
public OrthographicCamera camera;
public Viewport viewPort;
private SpriteBatch batch;
private BitmapFont myScoreFont;
// Общее разрешение экрана INT APP_WIDTH общественное = 1280; public int APP_HEIGHT = 800; public int fontPositionIn_X = 600; public int fontPositionIn_Y = 400; общественного MyGame() {
}
@Override
public void create() {
myScoreFont = new BitmapFont(Gdx.files.internal(Constants.PATH_TO_MY_SCORE_FONT), true);
batch = new SpriteBatch();
float w = Gdx.graphics.getWidth();
float h = Gdx.graphics.getHeight();
camera = new OrthographicCamera();
camera.position.set(0, 0, 0);
camera.update();
camera.setToOrtho(false, APP_WIDTH, APP_HEIGHT);
viewPort = new fillViewPort(1280, 800, camera);
}
@Override
public void dispose() {
batch.dispose();
}
@Override
public void render() {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL30.GL_COLOR_BUFFER_BIT);
float deltaTime = Gdx.graphics.getDeltaTime();
batch.setProjectionMatrix(camera.combined);
batch.begin();
myScoreFont.draw(batch,"any texts", fontPositionIn_X, fontPositionIn_Y)
batch.end();
}
@Override
public void resize(int width, int height) {
viewPort.update(width, height);
}
@Override
public void pause() {
}
@Override
public void resume() {
}
}
так с помощью VIEWPORT вы можете быть в состоянии играть свою игру во всех различных экранах.
спасибо! Я реализую его в своей следующей игре –
Все самое лучшее –