我在(非常)简单的项目中遇到了问题。当我绘制文本时,它在Android(三星Galaxy S Advance)和桌面之间显示在不同的位置(并且显然具有不同的大小)。
在我的渲染器类中,我有:
private OrthographicCamera cam;
public final int WIDTH = 320;
public final int HEIGHT = 480;
private ShapeRenderer debugRenderer = new ShapeRenderer();
private SpriteBatch batch = new SpriteBatch();
private BitmapFont font;
在我的构造函数中:
MyClass(){
this.cam = new OrthographicCamera(WIDTH, HEIGHT);
this.cam.position.set(WIDTH/2, HEIGHT/2, 0);
this.cam.update();
font = new BitmapFont(Gdx.files.internal("data/fonts/font.fnt"));
font.setColor(Color.RED);
}
最后,渲染功能:
public void render() {
// For each block y use this code:
// debugRenderer.begin(ShapeType.Filled);
// Rectangle rect = block.getBounds();
// debugRenderer.rect(rect.x, rect.y, rect.width, rect.height);
// debugRenderer.end();
// And then I draw my text:
batch.begin();
font.draw(batch, "Score: " + world.getScore(), 50,50)
batch.end();
}
所有块尺寸都是绝对数字(不是相对于任何变量,如stage.getWidth()或类似的东西)。
Desktop中的结果如下:
在Android中,我有:
正如您所看到的,块在屏幕上具有相同的分布(以屏幕覆盖的百分比表示),而文本则没有。它不会在同一个地方开始,并且没有相同的高度。
有人知道我做错了吗?
万一它有所帮助,块边界是:
XPos: 45 * i
YPos: 45 * j
SizeX: 32
SizeY: 32
编辑:另一个考虑因素,我使用的字体是从https://github.com/libgdx/libgdx/tree/master/demos/superjumper
中提取的答案 0 :(得分:1)
你做this.cam.update();
之后 -
batch.setProjectionMatrix(this.cam.combined);
debugRenderer.setProjectionMatrix(this.cam.combined);