【发布时间】:2017-05-18 13:56:22
【问题描述】:
我正在尝试基于 TiledMap(带有相机和视口)制作游戏。
我的游戏应该被缩放,始终填满整个屏幕(没有黑条)[就像在 Banana Kong 中一样]。我找到了ExtendViewport 应该可以解决这个问题(我认为)。
在尝试了很多事情之后,我没有找到正确的解决方案。地图总是缩放到小或/和错误的位置。当我在计算机上缩放窗口时,它应该用 Tiled Map 填充整个高度,然后用 TiledMap 的可绘制部分填充屏幕的整个长度(并提到纵横比)。
到目前为止,这是我的代码,如何使它工作?
public class LoadingScreen implements Screen {
//Reference to MainGameClass
private MainGameClass game;
//Camera and Viewport
private OrthographicCamera gamecam;
private Viewport gamePort;
//Tiled MaP
private TmxMapLoader maploader;
private TiledMap map;
private OrthogonalTiledMapRenderer renderer;
public LoadingScreen(MainGameClass game) {
this.game = game;
//Camera and Viewport
gamecam = new OrthographicCamera();
gamePort = new ExtendViewport(MainGameClass.WIDTH, MainGameClass.HEIGHT, gamecam);
//Tiledmap
maploader = new TmxMapLoader();
map = maploader.load("MarioBros.tmx");
renderer = new OrthogonalTiledMapRenderer(map, 1);
gamecam.setToOrtho(false);
}
@Override
public void show() {
}
public void update(float dt) {
//gamecam.position.x += 1;
gamecam.update();
renderer.setView(gamecam);
}
@Override
public void render(float delta) {
update(delta);
//Clear Game Screen with black
Gdx.gl.glClearColor(0,0,0,1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
renderer.render();
//Begin GameBatch
game.batch.setProjectionMatrix(gamecam.combined);
}
@Override
public void resize(int width, int height) {
gamePort.update(width,height);
gamecam.setToOrtho(false);
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void hide() {
}
@Override
public void dispose() {
}
}
希望有人能帮忙
编辑 1:
手机的高度应始终填充整个关卡高度。那么你看到的地图的长度也应该总是填满整个屏幕。所以在手机上拉得更多你可以看到更多的关卡,关卡的高度总是和手机一样高。
【问题讨论】:
-
MainGameClass.WIDTH、HEIGHT的值以及地图的tileWidth、tileHeight的值和图块中的地图大小是多少? -
MainGameClass.WIDTH 是屏幕/窗口高度,所以这里是 480px,tileWidth/Height 是 16px,它的 Tiles 高 6,长 60。
-
MainGameClass.WIDTH和HEIGHT是常数值? -
是的,它的常数
-
这些常量的值?
标签: android libgdx viewport orthographic