[英]Aspect ratio and viewport with Android : Need an explication
首先,我知道该主题已经有很多主题,但是我还是一无所知。
我正在尝试制作适用于Android的游戏(可从Play商店下载),但我有一个单一的问题无法解决,我该如何制作可以在每部具有相同长宽比的手机上玩的游戏?
例如:我想制作一个游戏,其中某些物体从屏幕顶部随机掉落在玩家的角色上。
如何在每部手机上打印相同外观的背景图像,播放器图像和下落的物体图像?
首先,我要打印bakcground图像,这是我目前拥有的:
public class MyAwesomeGame extends Game {
public SpriteBatch batch;
@Override
public void create () {
batch = new SpriteBatch();
setScreen(new MenuScreen(this));
}
@Override
public void render () {
super.render();
}
@Override
public void dispose () {
batch.dispose();
}
}
和:
public class MenuScreen implements Screen {
private MyAwesomeGame game;
public MenuScreen(MyAwesomeGame game){
this.game = game;
}
@Override
public void show() {}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(1, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
game.batch.begin();
game.batch.end();
}
@Override
public void resize(int width, int height) {}
@Override
public void pause() {}
@Override
public void resume() {}
@Override
public void hide() {}
@Override
public void dispose() {}
}
请有人可以向我解释我应该怎么做或给我一些代码吗?
视口实际上就是您所需要的。 如果您希望每个设备都可以使用具有相同长宽比的图像,则可以使用StretchViewport
这将根据设备的长宽比自动缩小/放大图像,但会降低图像质量。
如果您不希望使用FillViewport破坏图像质量,它还可以保持虚拟屏幕尺寸的长宽比,但是与FitViewport相比,它将始终充满整个屏幕,这可能会导致视口的某些部分被切掉关。
如果您希望背景图片占据整个屏幕,请执行以下操作:
int width = Gdx.graphics.getWidth(); \\ get the width of the device
int height = Gdx.graphics.getHeight(); \\ get the height of the device
Texture backgroundImage = new Texture(pathName);
Image image = new Image(backgroundImage);
image.setSize(width,height); \\ background image will fill up your whole screen
Image player = new Image(new Texture(pathname)); \\ it's the same as what we did above
Stage stage = new Stage(new StretchViewport(width,height));
stage.addActor(player); \\ add your player and background image to stage
stage.addActor(image);
单击此链接以获取有关Stage
的更多信息StretchViewport
的两个参数将根据设备的纵横比拉伸宽度和高度。
现在,在渲染方法上更新并渲染图像。
@Override
public void render(float delta) {
Gdx.gl.glClearColor(1, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
stage.act();
stage.draw();
}
希望对您有所帮助!
这正是视口的用途。
视口将处理不同的分辨率。 有关不同类型的视口以及它们之间的差异, 请参见视口Wiki 。
还有一些教程可以帮助您开始使用视口。 GameFromScratch有一个,但视口上还有更多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.