【发布时间】:2014-08-07 14:29:54
【问题描述】:
我对 Libgdx 和 TiledMap 之间的坐标有疑问。 我通过 TiledMap 创建了一个地图,并在其上添加了一个对象层(矩形),我希望在 Libgdx 中渲染地图时,在矩形的相同位置添加一个字体。 出于这个原因,在渲染方法中我这样做:
@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();
}
}
}
这是我在创建方法中设置相机和其他的方式:
@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
【问题讨论】:
-
如果您从平铺地图获取矩形地图对象,您需要知道 x 和 y 值可以是平铺位置,而不是实际的 x 和 y。要对此进行调试,您需要输出该矩形地图对象的 x 和 y 值。您可能需要做的是将 x 和 y 值乘以tilesize。例如:矩形的 x 和 y 值可以是 x = 6 y = 5。这意味着地图对象超过 6 个瓦片,向上 5 个瓦片。您需要将其转换为游戏的实际 x 和 y 值。
-
“您需要知道 x 和 y 值可以是图块位置而不是实际的 x 和 y”是什么意思。我注意到关于 X 轴字体对齐良好,而与 Y 没有对齐
-
我为糟糕的打字道歉。我正在参加一个无聊的会议并在我的平板电脑上打字。您需要做的是输出矩形的 x 和 y 以调试此问题。
-
如果我喜欢你说我,我看不到字体。为什么?
-
我做了:font.draw(batch, "Test Position",rect.getRectangle().x*32 ,rect.getRectangle().y*32); 32 是瓦片的宽度和高度
标签: java android coordinates