libGDX使用Stage和Actor在桌面和安卓手机上产生不同的相机角度

3

使用Stage和Actor的libGDX在桌面端和安卓手机上会产生不同的摄像机角度。

以下图片演示了问题:http://brandonyuh.minus.com/mFpdTSgN17VUq

在桌面版中,图像几乎占据了整个屏幕。但在安卓手机上仅占了一小部分屏幕。

以下是代码(不是我的实际项目,但我已经找出了问题):

package com.me.mygdxgame2;
import com.badlogic.gdx.*;
import com.badlogic.gdx.graphics.*;
import com.badlogic.gdx.graphics.Texture.TextureFilter;
import com.badlogic.gdx.graphics.g2d.*;
import com.badlogic.gdx.scenes.scene2d.*;
public class MyGdxGame2 implements ApplicationListener {
    private Stage stage;
    public void create() {
        stage = new Stage();
        stage.addActor(new ActorHi());
    }
    public void render() {
        Gdx.gl.glClearColor(0, 1, 0, 1);
        Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
        stage.draw();
    }
    public void dispose() {}
    public void resize(int width, int height) {}
    public void pause() {}
    public void resume() {}
    public class ActorHi extends Actor {
        private Sprite sprite;
        public ActorHi() {
            Texture texture = new Texture(Gdx.files.internal("data/hi.png"));
            texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
            sprite = new Sprite(new TextureRegion(texture, 0, 0, 128, 128));
            sprite.setBounds(0, 0, 300.0f, 300.0f);
        }
        public void draw(SpriteBatch batch, float parentAlpha) {
            sprite.draw(batch);
        }
    }
}

以上链接中包含 hi.png 图片。

非常感谢您回答我的问题。我已经花了三天时间试图弄清楚它。


如果你在这里提问 - http://gamedev.stackexchange.com/,可能会得到更了解libGDX的人。 - jcw
你在桌面项目中传递给 LwjglApplication 构造函数的是什么?你的安卓手机分辨率是多少? - P.T.
1个回答

1
 stage = new Stage(); 

使用相机初始化舞台,将其视口映射到真实屏幕分辨率。如果桌面和设备的分辨率不同,则它们看起来不同。 尝试为舞台设置固定值。请使用此代码:(您可以在此处查看javadoc here

public void setViewport (float width, float height, boolean keepAspectRatio);

例如,使用一些固定值,如setViewport(800, 600, true);

这也会填充屏幕,但始终显示一个800x600的世界,无论分辨率如何。(实际上,由于keepAspectRation = true防止扭曲,它将至少为800x600)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接