如何绘制(如Draw())时,如何使DrawString()将当前视口考虑在内?

时间:2015-12-23 04:26:32

标签: c# xna viewport monogame drawstring

目前,当我绘制它们的视口改变大小或位置时,我的所有纹理都会被缩放并移动到正确的位置(我不必自己做任何计算来执行此操作)。

然而,当我使用DrawString()(同时仍然在同一个视口中),并且视口改变大小或位置时,文本不遵循我可以弄清楚的逻辑。它按预期扩展,但它以非常奇怪的方式移动。

这里

a gif showing how it currently works

(为了让主要玩家的名字在缩小时正确移动,我想出了这个糟糕的"公式":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

如果我忘记提及相关内容,我会提前道歉。

1 个答案:

答案 0 :(得分:2)

DrawString()尝试

x /= Scale.X;
y /= Scale.Y;

这当然是伪代码。我想如果您能找到新的比例并将其存储在struct或其他内容中,您可以这样做以正确缩放文本的位置。