#java #android #libgdx #horizontal-scrolling
#java #Android #libgdx #горизонтальная прокрутка
Вопрос:
Я хочу запрограммировать игру, похожую на старые браузерные игры «Warfare 1917». Я застрял на части прокрутки.
Я попытаюсь объяснить, чего я хочу, с помощью gif:
Я искал и пробовал все целый день, но я не могу найти никаких реальных решений для этого. Я надеюсь, вы можете понять, что я пытаюсь сделать.
Ответ №1:
Поскольку перемещение камеры — плохая практика, лучше переместить слой (контейнер ваших спрайтов) или вы можете попробовать ScrollPane, реализацию WidgetGroup
p.s. протестировано на версии 1.9.11
Комментарии:
1. почему перемещение камеры — плохая практика???
Ответ №2:
Я думаю, это должно сработать
public class MovingCamera extends InputAdapter {
OrthographicCamera camera; // The camera to be moved
float pivotX; // The pivot for the movement
public MovingCamera() {
camera = new OrthographicCamera(); // Initialize camera
}
// Create a pivot
@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
Vector3 unprojected = camera.unproject(new Vector3(screenX, screenY, 0)); // Convert from pixel to world coordinates
pivotX = unprojected.x; // Save first finger touch on screen (Will serve as a pivot)
return true; // Input has been processed
}
// Move the camera
@Override
public boolean touchDragged(int screenX, int screenY, int pointer) {
Vector3 unprojected = camera.unproject(new Vector3(screenX, screenY, 0)); // Convert from pixel to world coordinates
camera.position.x = unprojected.x - pivotX; // Change camera position
camera.update(); // Apply changes
return true; // Input has been processed
}
}
И в вашем методе рендеринга:
public void render(SpriteBatch spriteBatch) {
spriteBatch.setProjectionMatrix(camera.combined); // Let the Sprite Batch use the camera
spriteBatch.begin();
// [Draw your Textures, TextureRegions, Sprites, etc...]
spriteBatch.end();
}