繁体   English   中英

libGDX TiledMapRenderer未绘制

[英]libGDX TiledMapRenderer not drawing

我在TiledMapRenderer遇到问题。 我用Tiled Map Editor制作了一个包含4个图块对象和1个图块64x64的tmx地图。 但是我不知道自己错过了什么。 屏幕上没有任何内容。 地图和图块集位于资源文件夹中。 我有很多Google员工,可以从教程和GDX TiledMap测试中复制粘贴的代码,但除了fps计数器和摄像头位置以外,在我的Alcatel One Touch Pixi 4007d GLES 2.0就绪型手机上什么也看不到。 我错过了什么? 可能的答案将对其他新手libGDX程序员有所帮助。 我已经在调试器中检查了地图,所有变量都已初始化,地图中也有一层。

这是Game类的代码

public class GameMain extends Game implements InputProcessor
{ 
private TiledMap map;
private TiledMapRenderer renderer;
private OrthographicCamera camera;
private BitmapFont font;
private SpriteBatch batch;

Vector2 mPrevTouch;

@Override
public void create () {
    float w = Gdx.graphics.getWidth();
    float h = Gdx.graphics.getHeight();

    camera = new OrthographicCamera();
    camera.setToOrtho(false, (w / h) * 10, 10);
    camera.update();

    Gdx.input.setInputProcessor(this);

    font = new BitmapFont();
    batch = new SpriteBatch();

    map = new TmxMapLoader().load("test.tmx");
    renderer = new OrthogonalTiledMapRenderer(map);
}

@Override
public void render () {
    Gdx.gl.glClearColor(0.55f, 0.55f, 0.55f, 1f);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    camera.update();

    renderer.setView(camera);
    renderer.render();

    batch.begin();
    font.draw(batch, "FPS: " + Gdx.graphics.getFramesPerSecond(), 10, 20);
    font.draw(batch, "Pos: " + camera.position.x + " " + camera.position.y, 20, 20);
    batch.end();        
}

@Override
public void dispose () {
    map.dispose();
}    

@Override
public boolean keyDown(int arg0) {
    // TODO Auto-generated method stub
    return false;
}

@Override
public boolean keyTyped(char arg0) {
    // TODO Auto-generated method stub
    return false;
}

@Override
public boolean keyUp(int arg0) {
    // TODO Auto-generated method stub
    return false;
}

@Override
public boolean mouseMoved(int arg0, int arg1) {
    // TODO Auto-generated method stub
    return false;
}

@Override
public boolean scrolled(int arg0) {
    // TODO Auto-generated method stub
    return false;
}

@Override
public boolean touchDown(int arg0, int arg1, int arg2, int arg3) {
    // TODO Auto-generated method stub
    return false;
}

@Override
public boolean touchDragged(int screenX, int screenY, int arg2) {

    if (mPrevTouch == null)
        mPrevTouch = new Vector2(0, 0);
    else
        camera.translate(new Vector2(screenX - mPrevTouch.x, screenY - mPrevTouch.y));

    mPrevTouch.x = screenX;
    mPrevTouch.y = screenY;

    return true;
}

@Override
public boolean touchUp(int arg0, int arg1, int arg2, int arg3) {
    // TODO Auto-generated method stub
    return false;
}
}

您的代码看起来不错,所以我认为您在相机尺寸或相机位置上遇到问题。 您的TMX地图的大小是多少? +尝试以这种方式创建相机:

    tiledMapCamera.setToOrtho(false, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM