[英]Coordinate Issue with Libgdx and TiledMap
我在Libgdx和TiledMap之间的坐标有问题。 我通过TiledMap创建了地图,并在其上添加了一个对象图层(矩形),并希望在Libgdx中渲染该地图时在矩形的相同位置添加字体。 因此,在render方法中,我这样做:
@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();
MapObjects collisionObjects = map.getLayers().get("Rectangle").getObjects();
for(MapObject object : collisionObjects) {
if (object instanceof RectangleMapObject) {
RectangleMapObject rect = ((RectangleMapObject) object);
batch.setProjectionMatrix(camera.combined);
batch.begin();
font.setUseIntegerPositions(false);
font.draw(batch, "Test Position",rect.getRectangle().x,rect.getRectangle().y);
batch.end();
}
}
}
这是我在create方法中设置相机和其他相机的方法:
@Override
public void create () {
font = new BitmapFont();
font.setColor(Color.BLACK);
float w = Gdx.graphics.getWidth();
float h = Gdx.graphics.getHeight();
Gdx.input.setInputProcessor(this);
camera = new OrthographicCamera(w,h);
camera.translate(w/2, h/2);
camera.update();
batch = new SpriteBatch();
map = new TmxMapLoader().load("TestRectangleMap.tmx");
renderer = new OrthogonalTiledMapRenderer(map);
}
我的问题是,相对于平铺地图中矩形的位置,字体绘制位置不正确。
您能帮我了解问题出在哪里吗? 非常感谢您花费的时间。
坐标输出我这样做:
System.out.println("X: "+rect.getRectangle().x);
System.out.println("Y: "+rect.getRectangle().y);
我得到这个:
X: 450.0
Y: 232.0
而TiledMap编辑器中对象的坐标为:
X: 14,062
Y: 5,156
让我尝试调整一下,只是为了清理一点。 我敢肯定,在绘制之前,您只需要开始一批即可。 因此,我认为没有必要将其嵌入到您的循环中。
控制台显示屏上应该有几件事可以进一步调试,
您可以在需要将某些内容输出到控制台时尝试添加Gdx.app.log()方法。
@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.setProjectionMatrix(camera.combined);
batch.begin();
MapObjects collisionObjects = map.getLayers().get("Rectangle").getObjects();
for(MapObject object : collisionObjects) {
if (object instanceof RectangleMapObject) {
RectangleMapObject rect = ((RectangleMapObject) object);
font.setUseIntegerPositions(false);
font.draw(batch, "Test Position",rect.getRectangle().x,rect.getRectangle().y);
Gdx.app.log("My Game", "Rect X: "+rect.getRectangle().x+" Y : "+rect.getRectangle().y);
}
}
batch.end();
}
在尝试查找绘制对象的位置时,将日志添加到代码中会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.