【问题标题】:LibGdx View Port, resolutions, sprite sizeLibGdx 查看端口、分辨率、精灵大小
【发布时间】:2014-10-26 12:18:30
【问题描述】:

你好,我是 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();


}

【问题讨论】:

标签: libgdx


【解决方案1】:

你已经在使用正确的东西了:Viewport。

有不同的Viewport 类,其中一些支持使用虚拟屏幕尺寸,这正是您所寻找的。

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

我猜你的情况有两种可能的Viewport-types:
- StretchViewport 支持虚拟屏幕尺寸并将其放大以匹配真实屏幕尺寸和真实纵横比。如果实际纵横比与虚拟纵横比不匹配,Sprites 将被拉伸,这可能看起来很奇怪。
- FitViewport 与StretchViewport 相同,但会保持纵横比。如果真实的宽高比与虚拟的不匹配,则会出现黑色边框。

使用方法:
首先你需要创建它:

myViewport = new StretchViewport(VIRTUAL_WIDTH, VIRTUAL_HEIGHT);  

然后设置Stages 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. 您永远不会为Viewport 打电话给update(width, height)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多