[英]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.