1

Libgdx github リポジトリで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);

私は基本的に、なぜあなたがそれをしたいのか疑問に思っています。私はそれを行うのに問題があるだけで、明らかな利点は見られません。

たとえば、私が抱えていた問題の 1 つは、BitMap フォントを追加することでした。背景に合わせてまったく拡大縮小されず、フォントの 1 ピクセルがユニット全体を占めていました。画像はこちら。

このコードを使用してフォントを描画しています。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 に答える