2011-11-13 12 views
3

にSpriteBatchとタイルにTexture2D今私は、forループMonoGame samplesからの例と同様に2とにTexture2Dをタイリングしています。MonoGame - iOSの

私はいくつかの読書をしていましたが、幅が&の2つのテクスチャ(2,4,8,16,32など)の力を1つのSpriteBatch.Draw呼び出しでタイルすることができました。

が、これはiOSのMonoGameでサポートされていますか?

私はそれをいくつかの試みを与えていない、と関係なく、それは単に代わりにそれをタイルの画像を引き伸ばし何。

SpriteBatch.Begin()でSamplerState.LinearWrapを使用していて、2048x128 pngを試してみましたが、512x32で1/4サイズを試しましたが、運がありません。 (大きいサイズを使用すると、ゲームは2400xで実行されます。ズームアウトされると、カメラで2.5倍に拡大できます)

+1

描画メソッドに提供したソース矩形は何ですか?あなたはそれが画像を伸ばすと言う...あなたは全体の画像を含むrectを供給するように聞こえます。 – dowhilefor

+0

私はまもなくこれを試してみるつもりです。 1つの問題は、タイル張りのイメージストリップ(雨の影響)を使用することです。これはおそらく並行して動作しないだろうか? X/Y方向にタイルする必要があり、画像ストリップを横切ってソース矩形を動かすことによって降雨をシミュレートする4つのフレームがあります。フレームごとに異なるTexture2Dを使用する必要があるでしょうね。 (ソース矩形のサイジングが私のために機能すると仮定して) – jonathanpeppers

+0

私の問題はXNAのサンプルでした:http://msdn.microsoft.com/en-us/library/bb975153(v=xnagamestudio.30).aspxソースの矩形を非常にうまく説明してください、@ dowhilefor、回答を投稿してください。 (たぶん、イメージストリップを同時にタイル化してアニメーション化する方法を詳しく説明しているかもしれません) – jonathanpeppers

答えて

2

draw methodのSourceRectangleパラメータを使用できます。テクスチャのどの部分を表示するかを定義します。 128x128のテクスチャがあるとします。 Rect(0, 0, 128, 128)を指定した場合は、テクスチャ全体を使用するように描画メソッドに指示します。描画メソッドにnullを渡す場合も同様です。 Rect(0, 0, 64, 64)を入力する場合は、テクスチャの左上部分を使用します。スプライト自体がどれほど大きくても、あなたのスプライトはこの部分を表示します。したがって、あなたのスプライトが128x128のサイズで描画されている場合、64x64テクスチャ部分は拡大縮小されます。

今、あなたは、アニメーションのためにそれを使用することができます。テクスチャにthisのようなアニメーションのシーケンスを格納する場合は、シーケンス内の次のイメージを表示するたびにソース矩形を再計算するだけで済みます。

それに加えて、あなたはあなたのソーステクスチャよりも、より大きな値に渡すことができます。 XNAはテクスチャをラップまたはクランプする必要があります。そうすれば、単純なタイリングを実現できます。それ以上のものが必要な場合は、foreachループのような手動のアプローチを使用する必要があります。 ラップは、2つのテクスチャのパワーを使用する場合にのみサポートされています。