C# XNA:根据变换矩阵避免鼠标光标纹理缩放

C# XNA:根据变换矩阵避免鼠标光标纹理缩放,c#,xna,C#,Xna,我需要在正确的世界位置绘制鼠标光标,因此我使用以下代码: Matrix inverseViewMatrix = Matrix.Invert(camera.GetViewMatrix(graphics.GraphicsDevice)); mousePos.X -= cursorTex.Width / 2; mousePos.Y -= cursorTex.Height / 2; Vector2 worldMousePosition = Vector2.Transform(mousePos, inve

我需要在正确的世界位置绘制鼠标光标,因此我使用以下代码:

Matrix inverseViewMatrix = Matrix.Invert(camera.GetViewMatrix(graphics.GraphicsDevice));
mousePos.X -= cursorTex.Width / 2;
mousePos.Y -= cursorTex.Height / 2;
Vector2 worldMousePosition = Vector2.Transform(mousePos, inverseViewMatrix);
spriteBatch.Draw(cursorTex, worldMousePosition, Color.White);
这实际上是可行的,但当我缩小相机时,鼠标光标被缩放了


有没有办法避免这种情况?缩小时,我希望保留原始光标纹理尺寸(32 x 32)。

我能想到的最简单的方法是在单独的spritebatch中绘制鼠标光标,删除比例

编辑

另一个选项是根据当前的摄影机缩放级别手动缩放纹理。基本上,您只需根据缩放级别调整光标纹理的比例

在与所有其他物品相同的抽签通话中,您可以执行以下操作:

float scale = 1 / camera.Scale;    //untested
Helper.SpriteBatch.Draw(cursorTex, worldMousePosition, null, Color.White, 0, Vector2.Zero, scale, SpriteEffects.None, 1);

假设您的相机跟踪当前世界范围。

谢谢您的回答。我尝试在另一个SpriteBatch.Begin()中绘制鼠标光标,如您所建议;光标现在有了正确的尺寸,但其位置相当“损坏”。。它不会跟随鼠标的真实位置。在这种情况下,您也可以相应地手动缩放精灵。我将更新我的答案。它有效!浮动比例=1/摄像机。缩放;spriteBatch.Draw(cursorTex,worldmauseposition,null,Color.White,0,Vector2.Zero,scale,SpriteEffects.None,1)//这就是我使用的完美代码。我错误地乘而不是除;)
float scale = 1 / camera.Scale;    //untested
Helper.SpriteBatch.Draw(cursorTex, worldMousePosition, null, Color.White, 0, Vector2.Zero, scale, SpriteEffects.None, 1);