如果你设置一个缩放矩阵SpriteBatch.Begin
,然后它将缩放尺寸和职位你绘制的每一个精灵SpriteBatch
,直到您致电End
.
SpriteBatch
使用客户空间,其中零是左上角Viewport
,该空间中的一个单位相当于视口中的一个像素。
当你给予SpriteBatch
一个变换,您绘制的精灵将在绘制之前为您应用该变换。所以你可以(并且应该)使用同样的技术翻译您的场景(例如,将其以玩家为中心)。
例如:
您的游戏以 720p 开发,并且您正在使用SpriteBatch
无需转换。你有一个位于右下角中心的精灵。假设它的纹理是 (32, 32) 像素,精灵的origin
是 (16, 16)(原点在纹理空间中指定,因此这是精灵的中心)。精灵的position
是 (1280, 720)。精灵的scale
为 1,这使得其结果大小为 (32, 32)。您将在屏幕右下角看到精灵的左上四分之一。
现在您转到 1080p 的屏幕(比 720p 大 1.5 倍)。如果你don't添加缩放矩阵SpriteBatch
,您可以看到整个精灵,其位于屏幕的三分之二处,向右和向下。
但您想要放大整个场景,以便在 1080p 下看起来就像在 720p 下一样。所以你添加矩阵Matrix.CreateScale(1.5f, 1.5f, 1f)
(注意 Z 轴使用 1,因为这是 2D 而不是 3D)SpriteBatch.Begin
,并做没有其他的.
现在,您的精灵场景将放大 1.5 倍。不做任何实际改动Draw
调用时,你的精灵将被绘制在位置 (1920, 1080)(屏幕右下角),其大小将为 (48, 48)(大 1.5 倍),其原点仍将是中心。您将在屏幕右下角看到精灵的左上象限,就像您在 720p 下所做的那样,并且具有相同的相对尺寸。