【发布时间】:2014-04-09 14:05:51
【问题描述】:
我对在 libgdx 平铺地图中实现单位比例感到非常困惑。例如,如果我将我的单位比例指定为 1/16f,并且在我的逻辑世界中让演员从 (0,0) 移动到 (0,1),那么精灵实际上会移动 16 个像素吗?这是否意味着演员只能直接在瓷砖上?
【问题讨论】:
-
“平铺地图”是指使用
TiledRenderer渲染并从.tmx 文件导入的地图?如果是这样,我不能告诉你太多,因为我从未使用过Tiled。但我也使用了基于图块的地图,并且我通过使用自定义Viewport为camera制作了它们。对我来说,每个图块都是 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是单位/像素,是的。我以为是像素/单位。那么你是对的。但我会为camera或stage使用自定义Viewport,这样你就可以一对一地绘制它们,这意味着如果你在getX()、getY()上绘制,你会得到想要的结果。至少我建议这样做。