首先,我知道该主题已经有很多主题,但是我还是一无所知。
我正在尝试制作适用于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() {}
}
请有人可以向我解释我应该怎么做或给我一些代码吗?
最佳答案
viewport实际上是您所需要的。如果要为每台设备使用相同的长宽比图像,则可以使用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);
单击此link了解有关
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();
}
希望对您有所帮助!