2

私はlibgdxで最初のものを作っています。それはタイル張りの 2D ゲームです。青と緑の 2 種類のタイルがあるとします。これらは、ゲーム フィールドの 1 つのセルをカバーする 32x32 ピクセルの画像です。添付画像の右側のようなタイル間のトランジションを作成できるようにしたいです。青と緑は、タイル内のすべてのピクセルが同じ色であることを意味するわけではなく、ピクセルの元のテクスチャを定義するだけです。

ここに画像の説明を入力

アルゴリズムについて質問しているわけではありません — JavaScript でキャンバスを介して既に実行しています。特にlibgdxで使用するクラス/テクニック/ソリューションについての指示が必要です。

そのため、青色のテクスチャからピクセルを取得し、緑色のテクスチャの上に描画する必要があります。シェーダーでこれを行う方法はありますか、それとも青いタイルのテクスチャからピクセル値を直接取得する方法はありますか?

既にすべてのテクスチャ (トランジション スプライトはまだ計算されていない) が にロードされているとしTextureAtlasます。望ましい効果を得るには、次にどのクラスに進む必要がありますか?

更新:これは、現在のコードの大まかな例です。私の gameScreen.render() メソッドは次のようになります。

batch.begin();
for (int x = 0; x < width; x++) {
        for (int y = 0; y < height; y++) {
                Sprite sprite = getFloorSpriteByCell(cells[x][y]);
                batch.draw(sprite, x * 32, y * 32);
        }
}
batch.end();

そして、getFloorSpriteByCell()いくつかのプリロードされたスプライトから選択します。これですべてです。派手な GUI での派手なレベルの編集はありません。

私はタイルマップを使用しません。レンダリング中にテクスチャの一部を別のテクスチャの上に描画する必要があるだけです。

4

1 に答える 1

1

ウェルプ、私はそれを完成させました。これがどのように見えるかです:

拡散なし:

ここに画像の説明を入力

拡散あり:

ここに画像の説明を入力

コード自体は大きすぎてプロジェクト固有であるため、ここに投稿することはできません。手順は次のとおりです (LibGDX の実際のクラスは、大文字で始まる太字で示されています)。

  1. 拡散している画像の個々のピクセルを選択し、それらをPixmapに入れます(私が持っているようにTextureAtlasにテクスチャがある場合は 、GoogleCode のこの質問のPixmapTextureAtlasクラスを使用して Pixmapを取得します)。
  2. これらのピックスマップをテクスチャに描画します
  3. 次に、通常どおり、すべてのテクスチャをSpriteBatchに描画します。

これが誰かに役立つことを願っています。実際のコードが必要な場合は、私に連絡してください。

于 2013-10-26T00:02:46.453 に答える