为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

catspeake 2022-07-27 21:38:16
我想编写一个类似于旧版“Warfare 1917”浏览器游戏的游戏。我被困在滚动部分。我将尝试用 gif 解释我想要做什么:https://i.stack.imgur.com/rvZqA.gif 我一整天都在搜索并尝试了所有东西,但我找不到任何真正的解决方案。我希望你能理解我想要做什么。
查看完整描述

2 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

由于移动相机是一种不好的做法,最好移动一个图层(你的精灵的容器),或者你可以尝试ScrollPaneWidgetGroup的实现

请参阅https://libgdx.badlogicgames.com/ci/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/ui/ScrollPane.html

ps 在 v. 1.9.11 上测试


查看完整回答
反对 回复 2022-07-27
?
手掌心

TA贡献1942条经验 获得超3个赞

我认为这应该可以解决问题


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();

}


查看完整回答
反对 回复 2022-07-27
  • 2 回答
  • 0 关注
  • 122 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号