没有预定义的方法可以拉伸视口以整齐地适应屏幕并让所有精灵看起来像它们的顺序一样。渲染到渲染目标是一种很好的缩放方式,尽管可能有点困难。特别是如果您进入后期处理效果。
要扩展您的游戏,我们需要做一些事情。首先,您需要选择一个默认分辨率,例如 800x600。让您的游戏完全充实并以这样的分辨率运行。
一旦您在此分辨率下准备好游戏,我们就可以更改屏幕尺寸并且仍然可以很好地适应所有内容。
首先获取视口的宽高
float width = GraphicsDevice.Viewport.Width;
float height = GraphicsDevice.Viewport.Height;
现在找到比例乘数:
float xScale = width / 800.0f;
float yScale = height / 600.0f;
比例值必须是浮点数或双精度数,并且默认分辨率的常量也必须是浮点数或双精度数。如果不是,则在我们执行计算时将省略小数位。给我们留下一个不准确的四舍五入的整数,并会导致不正确的缩放。
现在我们有了比例,我们可以简单地通过将比例因子乘以我们的位置和大小值来进行一些修改。
假设你的精灵位置是
pos.x = 400;
pos.y = 240;
它现在会变成
pos.x = 400 * xScale;
pos.y = 240 * yScale;
现在这意味着我们稍微改变了绘制精灵的方式
spritebatch.Draw(this.texture, new Rectangle(this.position.x, this.position.y, this.texture.Width * xScale, this.texture.Height * yScale), Color.white);
在这里,我们在其缩放位置绘制精灵,并根据我们尝试绘制的纹理的大小来缩放它的大小。
注意:当您使用此方法进行缩放时,您的所有尺寸和碰撞位置也需要进行缩放才能使其正常工作。