2017-08-02 72 views
0

我花了几天的时间试图找出我的代码出了什么问题。我试图在libgdx中渲染一个瓷砖贴图(.tmx),但它不渲染,它只是显示一个没有错误的红色屏幕。我已经重写了几次代码,并且总是得到相同的结果。我的平铺地图未在libgdx中呈现

我的代码:

public class Main extends ApplicationAdapter { 
SpriteBatch batch; 
TiledMap map; 
TmxMapLoader loader; 
OrthogonalTiledMapRenderer renderer; 
OrthographicCamera camera; 

@Override 
public void create() { 
    batch = new SpriteBatch(); 
    loader = new TmxMapLoader(); 
    map = loader.load("TiledMaps/TestMap.tmx"); 
    renderer = new OrthogonalTiledMapRenderer(map); 
    camera = new OrthographicCamera(); 
    camera.setToOrtho(false,Gdx.graphics.getWidth(),Gdx.graphics.getHeight()); 

} 

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

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

    batch.begin(); 
    batch.end(); 
} 

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

}

任何人都可以找到发生了什么事在这里我有一个在Android资源文件夹中的文件夹TileMaps的tilesheet的TMX文件。

任何帮助表示赞赏,在此先感谢。

+0

[如何在Android上使用LibGdx设置地图大小](https://stackoverflow.com/questions/45018391/how-to-set-map-size-on-android-using-libgdx) – Aryan

+0

tileWidth,tileHeight,mapWidth,mapHeight的值是多少? – Aryan

+0

我想你需要在'batch.begin()'和'batch.end()'里面包装'renderer.render()'。你可以看到[这里](https://github.com/haxpor/raceplant/blob/master/core/src/io/wasin/raceplant/states/Play.kt#L933-L963),类似于你在那里做的。 – haxpor

回答

1

如果我理解正确,你正在尝试一些复杂的(地图渲染),但遇到一个简单的问题(不渲染任何东西)。

你有一个简单的程序,你有一些渲染?建立它,所以你有几个硬编码的瓷砖渲染?为了正确读取和显示地图上的第一个图块,建立了一点点?在最终扩展它来阅读和显示所有的瓷砖之前,一旦你知道基础工作正常?

这就是我将如何解决这个问题。经过多年的编程,只是使用相同的过程来获得CreateProcess在Windows上的C++工作。没有在我的代码工作,所以我建立了一个空的项目,只是在notepad.exe上运行CreateProcess,并用StackOverflow.com的答案调整了事情,直到我得到它的工作,现在是关于在其他复杂的点滴加回来,所以我因为一次承担太多而没有完全丧失。

+0

林不太清楚你在说什么,但从我能理解我应该开始只渲染1瓦然后从那里移动?如果这就是你的意思,我不知道如何使用libgdx API以及我在几个月前提供的所有代码。 @Domarius – Arcxes

+1

我非常相信你的问题不是libgdx特有的,它更像是一个普遍的问题解决问题。逻辑决定了你的代码在当时和现在之间没有变化,还有其他的变化,你需要简单地进行试验和错误来缩小可能的范围。 我在这里告诉你的不是问题的答案,但如何找到问题的答案,这是更重要的:) 如果你的目标是渲染整个地图,但不知道如何甚至单独渲染一个瓦片,这是你跳过的一个严肃的步骤。你需要先学习基础知识。 – Domarius

+0

我注意到libgdx有一个论坛,你有发布吗?但比这更重要的是,应该有关于如何在屏幕上呈现某些东西的教程,您应该遵循这一点,它可能会在设置正确呈现您错过的东西方面发挥关键作用。 – Domarius