如何在XNA中缩放精灵表
本文关键字:缩放 精灵 XNA | 更新日期: 2023-09-27 18:22:17
我决定在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;
但接下来我需要从这个图像中生成精灵,这些精灵整齐地填充在屏幕上的网格中。我想我的主要问题是,当我对每个精灵调用绘制方法时,缩放是应用于原始精灵表,还是仅应用于从精灵表中获取纹理后的精灵本身?
如果是后者,我有点困惑,在构建我的个人精灵之前,如何最好地缩放精灵表。实际上,我可能会首先调整图像的大小,使其与屏幕尺寸完全匹配,以使生活更轻松,但这似乎有点困难。
欢迎提出任何建议!
你是说你的spritesheet图像比屏幕大,还是其中的各个sprites都大?
如果是前者,我认为这并不重要,因为你只会画出图纸的一部分(即你的个人精灵)。
如果是后者,则只需使用图像编辑器缩放子画面。
如果使用SpriteBatch
,则可以指定源矩形(纹理坐标)和目标矩形(屏幕坐标),因此可以在其中进行缩放。