【问题标题】:Unit scale in libgdx tile mapslibgdx 平铺地图中的单位比例
【发布时间】:2014-04-09 14:05:51
【问题描述】:

我对在 libgdx 平铺地图中实现单位比例感到非常困惑。例如,如果我将我的单位比例指定为 1/16f,并且在我的逻辑世界中让演员从 (0,0) 移动到 (0,1),那么精灵实际上会移动 16 个像素吗?这是否意味着演员只能直接在瓷砖上?

【问题讨论】:

  • “平铺地图”是指使用TiledRenderer 渲染并从.tmx 文件导入的地图?如果是这样,我不能告诉你太多,因为我从未使用过Tiled。但我也使用了基于图块的地图,并且我通过使用自定义 Viewportcamera 制作了它们。对我来说,每个图块都是 1 个单位大,地图的可见部分是(例如)80 个单位宽和 45 个单位高。也可以将角色移动 0.2(或其他)单位。 Sprite 将在Screen 上移动多少像素取决于大小/分辨率,因为我已将屏幕划分为 80 个单位,因此像素/单位是动态的。
  • 所以当我用我的 spritebatch 渲染我的精灵时,我会在getX() * (1/unit scale)
  • 不应该是getX()*unitScale吗?
  • 如果我的单位比例是 1/16 并且我尝试在 1,1 处绘制精灵并且我有 getX() * unit scale 它会尝试在 1/16、1/16 处绘制精灵,对吗?但我实际上想要它在 16,16
  • 好吧,如果unit scale 是单位/像素,是的。我以为是像素/单位。那么你是对的。但我会为camerastage 使用自定义Viewport,这样你就可以一对一地绘制它们,这意味着如果你在getX()getY() 上绘制,你会得到想要的结果。至少我建议这样做。

标签: java libgdx


【解决方案1】:

如果您选择 1/16f 作为地图的单位比例,则地图中的所有坐标都将基于图块(可以这么说)而不是基于像素。

您可以使用 Sprite 来实现这一点,例如,也可以通过 (1/16f) 缩放 Sprite。现在所有坐标(和精灵的大小)都被缩放以适应瓦片地图。

请记住在批量绘制之前为批量渲染器设置正确的投影,以便正确转换坐标。否则,您将不得不弄清楚相机的位置并手动调整您的绘图。 batch.setProjectionMatrix(camera.combined) 应该可以工作。

【讨论】:

    猜你喜欢
    • 2016-01-24
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 2016-07-08
    • 1970-01-01
    相关资源
    最近更新 更多