我对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();
}
}
}
这是我如何在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
而对象在平铺贴图编辑器中的坐标为:
X: 14,062
Y: 5,156
让我试着调整一下,把事情弄清楚一点。我很确定你只需要在绘图前开始一批。所以我不认为有必要将其嵌入到for循环中。
控制台显示屏上应该有一些东西可以进一步调试,
您可以尝试添加Gdx。应用程序。每当需要输出到控制台时,使用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();
}
当您尝试找出对象的绘制位置时,将日志添加到代码中会有所帮助。
我的布局结构如下: 当我将RecyclerView添加到布局时,NestedScrollView将位于AppBarLayout下,如下图所示: 我测试了一些解决这个问题的方法,比如将NestedScrollView放入FrameLayout,或者向NestedScrollView添加和属性,但这些方法无法解决这个问题。
我刚刚迁移到最新的spring Boot2.0.1.Release,并开始使用云版本“finchley.rc1”。我正在使用consul作为配置和服务注册表/发现服务器。但一旦我启动应用程序,它就会尝试从“localhost:8888”加载配置,这是针对Eureka的。我在application.properties中配置了领事主机和端口,但仍然看到相同的行为。 通过搜索,我发现spring cl
我的LibGdx程序有问题。我给了我的相机800高480宽。我正在坐标下绘制目标: 但是点击目标后,我的炮弹不会重叠目标矩形。 我在Touch中这样做: 不起作用。 这是一个炮弹游戏: 首先,我正在设置相机。 随机显示坐标范围内的目标。 使用Vector3新位置触摸取消投影相机。 触摸时,用加农炮位置计算目标位置并获得旋转加农炮的角度。 旋转大炮后,我向目标发射球。 现在,当我执行Rectangl
我已经在互联网上闲逛了很长一段时间,我想知道如何在不打开不同端口的情况下一起使用BufferedReader和DataInputStream。我尝试过流式图像,但由于缓冲读取器存储了额外的字节,它创建了一个损坏的图像。当我尝试使用datainputstream.read()时,我无法轻松地读取整行文本。我的问题有什么解决办法吗?
TiledMap(地图)用于在游戏中显示 TMX 格式的地图。 点击 属性检查器 下方的 添加组件 按钮,然后从 渲染组件 中选择 TiledMap,即可添加 TiledMap 组件到节点上。 TiledMap 的脚本接口请参考 TiledMap API。 TiledMap 属性 属性 功能说明 Tmx Asset 指定 .tmx 格式的地图资源 详细说明 添加 TiledMap 组件之后,从 资
问题内容: protocol BasePresenterProtocol : class {} protocol DashboardPresenterProtocol : BasePresenterProtocol {} 在上面的代码中,我在下一行收到错误 ,但未确认协议,但我已在中声明。虽然我已经宣布 为什么会出现此错误?请让我知道我在这段代码中做错了什么。 问题答案: 您不能使用type 属性