#java #libgdx #screen-resolution #aspect-ratio
Вопрос:
Прямо сейчас я пытаюсь закодировать что-то, что делает так, чтобы при изменении размера окна с помощью мыши оно оставалось с соотношением сторон 16: 9. Я хотел бы иметь код для этого внутри моей настольной программы запуска (я только компилирую на рабочий стол), но я также согласен сделать это в моем игровом файле, public void resize()
если потребуется. Я использую Libgdx 3, поэтому я не могу использовать такие вещи, как cfg.height
, но мне любопытно, смогу ли я сделать это с помощью config.setWindowSizeLimits()
и просто изменить границы, когда это необходимо. Если я что-то упускаю, и на самом деле есть способ получить размеры окна внутри desktop launcher, это было бы очень полезно знать.
Комментарии:
1. Какой макет вы используете?
2. Прямо сейчас я использую FitViewport, но я все еще нахожусь в точке, где я могу его изменить. Сейчас я немного отошел от своей первоначальной идеи, но все равно было бы неплохо получить ответ. Просто для ясности, я хочу контролировать соотношение окон, а не содержимое внутри него.
3. Кроме того, для тех, кому это может помочь в будущем, я обнаружил, что вы можете получить высоту, ширину и частоту обновления текущего монитора, используя
Lwjgl3ApplicationConfiguration.getDisplayMode().refreshRate;
where RefreshRate можно изменить, чтобы получить то, что вам нужно.
Ответ №1:
Вы можете использовать FitViewport. Это не исправит соотношение самого окна, но его keeps the aspect ratio by scaling the world up to fit the screen, adding black bars (letterboxing) for the remaining space
.
Вы можете использовать его следующим образом:
public void initializeCameraAndViewport() {
camera = new OrthographicCamera();
viewport = new FitViewport(SCENE_WIDTH, SCENE_HEIGHT, camera);
}
@Override
public void resize(int width, int height) {
viewport.update(width, height);
}
Это сделает экран похожим на это:
Более подробное описание видовых экранов см. в вики libgdx.