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