【问题标题】:XNA Mouse move lose spriteXNA 鼠标移动丢失精灵
【发布时间】:2013-06-09 12:31:49
【问题描述】:

我在 xna 2D sprite 中做了一个简单的测试,并尝试用鼠标移动它,它可以工作,但是如果我移动它有点快,sprite 会在途中丢失,我按住左键,当我回来时对精灵继续拖动...

我想知道为什么如果我移动得快一点我会失去我的精灵???

这是我的移动逻辑:

MouseState ms = Mouse.GetState();
if ((ButtonState.Pressed == Mouse.GetState().LeftButton) && myBall.RectObject.Intersects(new Rectangle(ms.X, ms.Y, 0, 0)))
{
    myBall.RectObject = new Rectangle(ms.X - myBall.RectObject.Width / 2, ms.Y - myBall.RectObject.Height / 2, myBall.RectObject.Width, myBall.RectObject.Height);
}

【问题讨论】:

    标签: c# xna mouse move


    【解决方案1】:

    我建议这样处理:

    如果鼠标左键单击球(使用 OP 中的 if 语句),则将球标记为被拖动(对象上的简单 'bool dragged;')

    如果鼠标在任何时候都没有左键单击,则将球标记为未拖动。

    如果球正在被拖动,则跳转到鼠标位置(使用 OP 中 if 块中的代码)

    (都在你已经使用的同一个函数中)

    编辑:这里有一些示例代码,以防我没有解释清楚

    MouseState ms = Mouse.GetState();
     if ((ButtonState.Pressed == Mouse.GetState().LeftButton))
    {
        if (myBall.RectObject.Intersects(new Rectangle(ms.X, ms.Y, 0, 0)))
        {
            myball.dragged = true;
        }
    }
    else
    {
         myball.dragged = false;
    }
    if (myball.dragged)
    {
        myBall.RectObject = new Rectangle(ms.X - myBall.RectObject.Width / 2, ms.Y - myBall.RectObject.Height / 2, myBall.RectObject.Width, myBall.RectObject.Height);
    }
    

    【讨论】:

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