1

我在 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 字体。它根本没有随着背景缩放,字体中的一个像素占据了整个单位。图片在这里。

我正在使用此代码来绘制字体。这是 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();
}
4

1 回答 1

2

我认为有一个方便的理由为平铺地图设置 1/16 比例(也许是为了计算正在撞击的平铺或更改平铺(它们在方便的整数索引处)。

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

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

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

于 2013-05-12T15:50:34.900 回答