目前,当我绘制它们的视口改变大小或位置时,我的所有纹理都会被缩放并移动到正确的位置(我不必自己做任何计算来执行此操作)。
然而,当我使用DrawString()(同时仍然在同一个视口中),并且视口改变大小或位置时,文本不遵循我可以弄清楚的逻辑。它按预期扩展,但它以非常奇怪的方式移动。
这里
(为了让主要玩家的名字在缩小时正确移动,我想出了这个糟糕的"公式":X - = Viewport.X / 2.15f.Y - = Viewport .X / 3.2f)
现在,有没有什么方法可以让DrawString()在使用视口进行缩放时像Draw()一样工作?
我现在设置的方式是:
_spriteBatch.GraphicsDevice.Viewport = ScreenGame.Viewport;
// Draw tile sprites
// Draw player sprites
// Draw text
如果我忘记提及相关内容,我会提前道歉。
答案 0 :(得分:2)
在DrawString()
尝试
x /= Scale.X;
y /= Scale.Y;
这当然是伪代码。我想如果您能找到新的比例并将其存储在struct
或其他内容中,您可以这样做以正确缩放文本的位置。