我决定在Windows Phone 7上玩XNA游戏,在我的第一个游戏中,我需要拍摄一张图像并将其分割成方形精灵,因此图像基本上变成了精灵表。原始图像可能对于屏幕来说太大或太小,所以我已经完成了以下工作以确定如何应用比例以使其适合屏幕,但没有任何间隙显示(因此一个维度可能会超出屏幕)。
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;
但是接下来我需要从这个图像中生成精灵,在网格中整齐地填充屏幕。我想我的主要问题是,当我在每个精灵上调用我的绘制方法时,缩放是否适用于原始精灵表,或者只是从精灵表中获取其纹理后的精灵本身?
如果是后者,我对在构建我的个人精灵之前如何最好地缩放精灵表感到困惑。实际上,我可能会首先调整图像大小以与屏幕尺寸完全匹配,以使生活更轻松,但这似乎有点沉重。
欢迎任何建议!
答案 0 :(得分:1)
您是说您的spritesheet图片大于屏幕,或者其中的个人精灵是什么?
如果是前者,我认为这不重要,因为你只会画一部分表(即你的个人精灵)。
如果是后者,那么只需使用图像编辑器缩放spritesheet。
如果您使用的是SpriteBatch
,那么您可以指定源矩形(纹理坐标)和目标矩形(屏幕坐标),这样您就可以在那里进行缩放。