【问题标题】:Mouse position issues in XNA 3.1XNA 3.1 中的鼠标位置问题
【发布时间】:2013-06-22 00:36:48
【问题描述】:

我正在使用 XNA 3.1 进行游戏开发,鼠标位置问题不大,我还提供了问题的屏幕截图,现在在下面的代码中我试图显示文本“开始”正好在鼠标位置,但文本的位置距离光标大约 200 - 250 像素,而不是光标在游戏窗口上的同一点。

void MenuMainMenuDraw()
        {
            // Main Menu After Draw
            // Menu Option After Draw

            MouseState ms = Mouse.GetState();

            spriteBatch.DrawString(fontMenu, "Start"
               , new Vector2(ms.X, ms.Y)
               , Color.Red);


            spriteBatch.DrawString(fontMenu, "Options"
                , new Vector2((float)MENU_GLOBAL.MENU_POSITION_X, (float)MENU_GLOBAL.OPTION_POSITION_Y)
                , Color.Red);

            spriteBatch.DrawString(fontMenu, "Leader's Board"
                , new Vector2((float)MENU_GLOBAL.MENU_POSITION_X, (float)MENU_GLOBAL.HIGHSCORE_POSITION_Y)
                , Color.Red);

        }

问候 MGD

【问题讨论】:

  • fontMenu 是什么样的? Mouse.GetState() 是否返回屏幕空间或窗口空间中的鼠标坐标?
  • 我不确定它在哪个参考中给了我坐标,因为即使我将鼠标移到屏幕的 0,0 位置(左角),它仍然会像周围一样给出 Y 减号 - 300
  • @asawyer GetState() 返回一个相对于游戏窗口的值。
  • 你是在某种 while(true) 循环中调用 draw 方法还是只调用一次?这可能是一个愚蠢的评论,但如果你不一直重绘你的 XNA 应用程序,项目就不会移动..

标签: xna mouseevent


【解决方案1】:

我能想到几个可能的原因。我看不出您发布的代码 sn-p 有任何直接错误,因此如果这些问题都无法解决,请发布更多代码。

使用默认字体创建新的SpriteFont 时是否会出现同样的问题?您当前使用的字体的间距可能有问题。

在您的spriteBatch.Begin(...) 代码中,您是否提供了一个transformMatrix?如果是这样,请尝试使用不带参数的spriteBatch.Begin()。您是否在做任何不寻常的事情,例如将Effects 应用于您的 SpriteBatch 绘图?

您是否正在绘制到渲染目标,然后重新绘制到屏幕上?

【讨论】:

  • 不,我没有使用任何特殊的东西我的意思是我只是以正常的方式绘画,我不知道为什么我会遇到这个问题
  • 您是否尝试过使用不同的精灵字体?否则,就像我说的,编辑您的帖子并添加更多代码。用这么少的信息很难弄清楚发生了什么。
【解决方案2】:

如果我的游戏窗口实际上大于运行游戏的计算机屏幕的分辨率,我会遇到看起来很奇怪的鼠标位置问题。这是一个快速检查,但它可能会有所帮助。 (还记得 XNA 从中心点绘制图像,但我相信默认情况下从文本的左上角绘制测试)。希望有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多