你如何使用 LibGDX 实现水平滚动?

我想编写一个类似于旧版“Warfare 1917”浏览器游戏的游戏。我被困在滚动部分。

我将尝试用 gif 解释我想要做什么:

https://i.stack.imgur.com/rvZqA.gif

我一整天都在搜索并尝试了所有东西,但我找不到任何真正的解决方案。我希望你能理解我想要做什么。



catspeake
浏览 123回答 2
2回答

开心每一天1111

由于移动相机是一种不好的做法,最好移动一个图层(你的精灵的容器),或者你可以尝试ScrollPane,WidgetGroup的实现请参阅https://libgdx.badlogicgames.com/ci/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/ui/ScrollPane.htmlps 在 v. 1.9.11 上测试

手掌心

我认为这应该可以解决问题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();}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java