我为什么要使用单位比例? (Libgdx)

时间:2013-05-11 20:45:22

标签: libgdx bitmap-fonts

我已经查看了Libgdx github repo上的SuperKaolio示例。它基本上是将Tiled地图与Libgdx集成的测试。他们正在使用1/16的单位比例,如果我已正确理解它意味着世界不再是基于像素网格而是基于单位网格(每个16像素宽)。这是示例中的代码和注释:

// load the map, set the unit scale to 1/16 (1 unit == 16 pixels)
map = new TmxMapLoader().load("data/maps/tiled/super-koalio/level1.tmx");
renderer = new OrthogonalTiledMapRenderer(map, 1 / 16f);

我基本上想知道你为什么要那样做。我只是遇到了问题,看不出任何明显的优势。

例如,我遇到的一个问题是添加BitMap字体。它完全没有背景缩放,字体中的一个像素占据整个单元。 Image here.

我正在使用此代码绘制字体。这是libgdx中包含的标准14点arial字体

BitmapFont font = new BitmapFont();
font.setColor(Color.YELLOW);

public void draw(){
   spriteBatch.begin();
   font.draw(batch, "Score: " + thescore, camera.position.x, 10f);
   spriteBatch.end();
}

1 个答案:

答案 0 :(得分:2)

我认为有一个方便的理由是为平铺地图设置1/16比例(可能用于计算正在击中哪个图块或更改图块(它们是方便的整数索引)。

无论如何,无论使用什么转换(以及因此使用什么“相机”,因此使用什么投影矩阵)来渲染瓷砖,您都可以为您的UI使用不同的相机

查看Superjumper demo,并看到它使用单独的“guiCam”来呈现“GUI”元素(暂停按钮,游戏结束文本等)。 WorldRenderer有自己的相机,使用世界空间坐标来更新和显示世界。

这样,您可以为显示的每个方面使用适当的坐标。