詳しい説明: 私は4タイル[32 x 32]のタイルセットを持っています。この例では、土、草、アスファルト、セメントと呼んでいます。
私は比較的長い芝生[96 x 32]の表面を描きたいと思います。 XNA(LinearWarp)のタイリングメカニズムを使用して、単一のDraw()コールを使用して描画する方法はありますか?XNA:タイルセットから直接タイルを引き出す方法はありますか?
私が試した:
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.LinearWrap,null,null);
GraphicsDevice.SamplerStates[0] = SamplerState.LinearWrap;
spriteBatch.Draw(_tileSetTexture /* 64 x 64 */, destRectangle/* 96 x 32*/, TileFrame /*32 x 32*/, Color.White, 0f , Vector2.Zero ,SpriteEffects.None, 0f);
私はそこに別のにTexture2Dにすべてのタイルをトリミングのオプションがありますし、後で埋めるためにXNA LinearWrapのためのソース矩形の「拡張子」を使用することを知っているが、私はそれらを必要としますすべてが1つの大きなTileSetイメージに収められ、できるだけシンプルに実行されます。
私がこれをしたい理由は、回転を使用するためです。私は、表面の1つの長い矩形を描き、それからただ一つを回転させます。私が複数のDraw()呼び出しを使用する場合、私は(再)各セグメントの開始点を計算する必要があります。 – CodinRonin
あなたがしようとしていることは、 'SpriteBatch'によって提供される機能の範囲外です。なぜあなたはあなたの画像が単一のテクスチャ上にある必要がありますか? –