Java Libgdx虚拟宽度和高度

Java Libgdx虚拟宽度和高度,java,libgdx,screen-resolution,Java,Libgdx,Screen Resolution,我遵循本教程:并使用虚拟宽度和高度 我的要求是: 背景图像应该填满整个屏幕 游戏资产的纵横比应保留:我的虚拟宽度、高度均为:800600。其中一个游戏资产的初始虚拟位置为450,20,因此我设置: playerSprite.setPosition(450, 20);//I assume (450,20) would be virtual 问题是,当我通过main函数将窗口大小设置为200X200时,玩家(游戏资源)不可见。我认为资产(大小和位置)会自动缩放并保持纵横比。但是,当我将屏幕大小设

我遵循本教程:并使用虚拟宽度和高度

我的要求是:

  • 背景图像应该填满整个屏幕

  • 游戏资产的纵横比应保留:我的虚拟宽度、高度均为:800600。其中一个游戏资产的初始虚拟位置为450,20,因此我设置:

    playerSprite.setPosition(450, 20);//I assume (450,20) would be virtual
    
  • 问题是,当我通过main函数将窗口大小设置为200X200时,玩家(游戏资源)不可见。我认为资产(大小和位置)会自动缩放并保持纵横比。但是,当我将屏幕大小设置为800X600,然后将其大小调整为200X200(手动)时,资产被正确缩放和定位。我不知道在主功能中设置200X200与之后将较大的窗口调整为200X200有什么区别

    我的渲染功能:

    Gdx.gl.glClearColor(0, 0, 0, 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    //Stretch background to cover the entire screen
    if(backgroundTR!=null){
    //Gdx.gl.glViewport(0, 0, screenWidth, screenHeight);
        batch.begin();
    batch.draw(backgroundTR, 0, 0,screenWidth,screenHeight);
    batch.end();
    }
    
    //Preserve aspect ratios of assets as per the tutorial
    orthographicCamera.update();
    orthographicCamera.apply(Gdx.gl10);
    Gdx.gl.glViewport((int)viewport.x, (int)viewport.y, (int)viewport.width, (int)viewport.height);
    
    batch.begin();
    batch.draw(titleTR,160f,450f);
        //batch.draw(playerTR,450f,20f);
    playerSprite.draw(batch);
    batch.end();
    

    背景也没有填充。有什么帮助吗?

    请看一下libgdx wiki,这不再需要了,因为舞台确实有可能保持分辨率和纵横比!所以教程已经过时了。但我解决了我的问题!我使用了一个类来绘制背景(将其拉伸到全屏)。我扩展了该类,并使用虚拟视口的概念来保持资产的纵横比。但是我会看一看“舞台”。所有关于调整尺寸的东西都不再需要了,所以你会有更少的问题,接触点的问题也会更少,等等。如果你愿意,你甚至不需要再拿相机了