LibGdx查看端口,分辨率,精灵大小

时间:2014-10-26 12:18:30

标签: libgdx

Helllo,我是libgdx的新手,我需要一些帮助,如果我的桌面启动器分辨率为480x320,精灵占用屏幕的80%,但是如果1280x720,精灵很小,我需要让它在所有解析时看起来都一样我该怎么做呢?对你来说可能很容易,但不是我的,我使用libgdx 1.3.1 这是我的libgdx代码:

SpriteBatch batch;
Texture img;
Sprite mysprite;
@Override
public void create () 
{
    batch = new SpriteBatch();
    img = new Texture("badlogic.jpg");
    mysprite = new Sprite(img);
    stage = new Stage(new StretchViewport(480, 320));


}

StretchViewport myviewport = new StretchViewport(480, 320);

public void resize(int width, int height) 
{
    // use true here to center the camera
    // that's what you probably want in case of a UI
    stage.setViewport(myviewport);
    stage.getCamera().position.set(640/2, 480/2, 0);
}

private Stage stage;

@Override
public void render () 
{

    Gdx.gl.glClearColor(1, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);


    batch.begin();
    mysprite.draw(batch);
    batch.end();


}

1 个答案:

答案 0 :(得分:2)

您已经在使用正确的东西:Viewport

有不同的Viewport类,其中一些支持使用虚拟屏幕大小,这正是您所需要的。

什么是虚拟屏幕尺寸?这是你的代码正在使用的屏幕尺寸,然后按比例放大以匹配真实的分辨率 基本上,您可以使用自己的单位,然后自动放大以匹配像素。

我想在你的情况下有2种可能的Viewport - 类型:
- StretchViewport支持虚拟屏幕尺寸并将其缩放以匹配实际屏幕尺寸和真实宽高比。如果实际宽高比与虚拟宽高比不匹配,Sprite将被拉伸,这可能看起来很奇怪 - FitViewportStretchViewport相同,但会保持宽高比。如果真实宽高比与虚拟宽高比不匹配,则会出现黑色边框。

如何使用它:
首先,您需要创建它:

myViewport = new StretchViewport(VIRTUAL_WIDTH, VIRTUAL_HEIGHT);  

然后设置Stage s Viewport

stage = new Stage(myViewport);  

resize方法中,您需要update Viewport

myViewport.update(width, height);  

多数民众赞成。
stage现在使用Viewport及其camera进行渲染。您不需要触摸camera,除非您需要移动它。

所以你的错误是:

  1. stage = new Stage(new StretchViewport(480, 320));
    这会创建一个您不会存储/使用的新StretchViewport
  2. stage.setViewport(myviewport);
    您只需在创建stage
  3. 时设置一次
  4. 您永远不会为update(width, height)致电Viewport