我正在使用 libgdx 创建一个游戏,我想在桌面上以更高分辨率运行,但我希望它在以较小分辨率在 android 上运行时正确缩小所有内容。我读过最好的方法是不使用像素完美的相机,而是使用世界坐标,但我不确定如何正确地做到这一点。
这是我现在拥有的代码:
@Override
public void create() {
characterTexture = new Texture(Gdx.files.internal("character.png"));
characterTextureRegion = new TextureRegion(characterTexture, 0, 0, 100, 150);
batch = new SpriteBatch();
Gdx.gl10.glClearColor(0.4f, 0.6f, 0.9f, 1);
float aspectRatio = (float)Gdx.graphics.getWidth() / (float)Gdx.graphics.getHeight();
camera= new OrthographicCamera(aspectRatio, 1.0f);
}
@Override
public void render() {
GL10 gl = Gdx.graphics.getGL10();
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
camera.update();
camera.apply(gl);
batch.setProjectionMatrix(camera.combined);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
draw();
}
private void draw() {
//batch.getProjectionMatrix().set(camera.combined);
batch.begin();
batch.draw(characterTextureRegion, 0, 0, // the bottom left corner of the box, unrotated
1f, 1f, // the rotation center relative to the bottom left corner of the box
0.390625f, 0.5859375f, // the width and height of the box
1, 1, // the scale on the x- and y-axis
0); // the rotation angle
batch.end();
}
我使用的纹理是 256x256,其中的实际图像是 100x150。
这是我运行游戏时得到的结果:http: //i.imgur.com/HV9Bi.png
被渲染的精灵是巨大的,考虑到这是原始图像:http: //i.imgur.com/q1cZT.png
制作它的最佳方法是什么,以便精灵以其原始大小渲染,同时仍然保持在以不同分辨率播放时正确缩放游戏的能力?
我只找到了两个解决方案,这两个我都不喜欢。
- 如果我为相机使用像素坐标,图像显示了它应该如何,但是当我将它放在具有不同分辨率的手机上时,它根本没有缩放。
- 我可以在绘制纹理区域时缩小它,但似乎有更好的方法,因为试图找出正确的数字来缩放它是非常乏味的。