0

我正在尝试填充 Libgdx 附带的调整大小功能以适应所有 android 屏幕。

到目前为止我看到的最好的解决方案是这个教程:http ://www.java-gaming.org/index.php?topic=25685.0但是当我在我的 Galaxy S3 上运行它时,按钮真的很小而且整体游戏很小,而在桌面版本上它很大,并且是我想要的方式。我现在的调整大小代码是:

@Override
public void resize(int width, int height) {
    float aspectRatio = (float)width/(float)height;
    float scale = 2f;
    Vector2 crop = new Vector2(0f, 0f); 
    if(aspectRatio > ASPECT_RATIO)
    {
        scale = (float)height/(float)VIRTUAL_HEIGHT;
        crop.x = (width - VIRTUAL_WIDTH*scale)/2f;
    }
    else if(aspectRatio < ASPECT_RATIO)
    {
        scale = (float)width/(float)VIRTUAL_WIDTH;
        crop.y = (height - VIRTUAL_HEIGHT*scale)/2f;
    }
    else
    {
        scale = (float)width/(float)VIRTUAL_WIDTH;
    }

    float w = (float)VIRTUAL_WIDTH*scale;
    float h = (float)VIRTUAL_HEIGHT*scale;
    viewport = new Rectangle(crop.x, crop.y, w, h);
}

我的渲染代码是:

@Override
public void render() {
    // update camera
    camera.update();

    // set viewport
    Gdx.gl.glViewport((int) viewport.x, (int) viewport.y,
                      (int) viewport.width, (int) viewport.height);

    // clear previous frame
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

    ScreenManager.updateScreen();

    sb.begin();
    ScreenManager.renderScreen(sb);
    sb.end();
}

我的变量是:

private static final int VIRTUAL_WIDTH = 600;
private static final int VIRTUAL_HEIGHT = 800;
private static final float ASPECT_RATIO = (float)VIRTUAL_WIDTH/(float)VIRTUAL_HEIGHT;

public static BitmapFont FONT;

private OrthographicCamera camera;
private Rectangle viewport;
private SpriteBatch sb;

就像我说的,当我运行桌面版本时它运行良好,但是当我在我的 Galaxy S3(屏幕暗淡:1,280 x 720)上运行它时,游戏被缩小了很多,并且它会裁剪出游戏的顶部和侧面这根本不是我想要的。

4

0 回答 0