1

Windows Phone 7 用の XNA を試してみることにしました。最初のゲームでは、画像を取得して正方形のスプライトに分割する必要があるため、画像は本質的にスプライト シートになります。元の画像は画面に対して大きすぎるか小さすぎる可能性が高いため、次の手順を実行して、画面に収まるようにスケールを適用する方法を見つけましたが、ギャップは表示されません (したがって、1 つの寸法が画面)。

Texture = content.Load<Texture2D>(assetName);

var width = Texture.Bounds.Width;
var height = Texture.Bounds.Height;

var widthDifference = width - screenWidth;
var heightDifference = height - screenHeight;

if (widthDifference < 0 || heightDifference < 0)
{
   if (widthDifference < heightDifference)
      Scale = (float) screenWidth/width;
   else
      Scale = (float) screenHeight/height;
}
else
{
   if (widthDifference > heightDifference)
      Scale = (float) screenWidth/width;
   else
      Scale = (float) screenHeight/height;
}

if (Scale < 0)
   Scale = Scale*-1;

しかし次に、この画像からスプライトを生成して、画面をグリッドできれいに埋める必要があります。私の主な質問は、各スプライトで描画メソッドを呼び出すときに、スケーリングが元のスプライト シートに適用されるのか、それともスプライト シートからテクスチャを取得した後のスプライト自体に適用されるのかということだと思います。

後者の場合、個々のスプライトを作成する前に、スプライト シートをどのようにスケーリングするのが最善かについて少し混乱しています。実際には、最初に画像のサイズを画面のサイズに正確に一致するように変更して、作業を楽にすることになるかもしれませんが、これは少し面倒です。

どんな提案でも大歓迎です!

4

1 に答える 1

1

スプライトシートの画像が画面よりも大きい、またはその中の個々のスプライトが大きいと言っていますか?

前者の場合は、シートの一部 (つまり、個々のスプライト) しか描画できないため、問題ではないと思います。

後者の場合は、画像エディターを使用してスプライトシートをスケーリングします。

を使用している場合はSpriteBatch、ソースの四角形 (テクスチャ座標) と宛先の四角形 (スクリーン座標) を指定できるため、そこでスケーリングを行うことができます。

于 2012-02-01T07:58:12.133 に答える