获取鼠标的移动方向

时间:2019-03-01 14:09:14

标签: c# mouse

我知道有人问过这个问题,但是就我而言,我不知道自从我尝试使用它以来它是否可以使用MouseEventArgs,这是整个渲染/输入循环,我只能使用键盘相当不方便。

public void update()
    {


        //--do raycast--//
        raycast();

        //=========================//
        //=====take user input=====//
        //=========================//

        KeyboardState state = Keyboard.GetState();

        bool lArrowKeyDown = state.IsKeyDown(Keys.Left) || state.IsKeyDown(Keys.A);

        //MouseLeft
        if (lArrowKeyDown)
        {
            rotate(rotSpeed);
        }
        //MouseRight
        bool rArrowKeyDown = state.IsKeyDown(Keys.Right) || state.IsKeyDown(Keys.D);

        if (rArrowKeyDown)
        {
            rotate(-rotSpeed);
        }
        //MouseUp
        bool uArrowKeyDown = state.IsKeyDown(Keys.Up) || state.IsKeyDown(Keys.W);
        bool shift = state.IsKeyDown(Keys.LeftShift);
        if (uArrowKeyDown)
        {
            move(moveSpeed);
        }
        if (uArrowKeyDown && shift)
        {
            move(moveSpeed+0.01);
        }

        bool dArrowKeyDown = state.IsKeyDown(Keys.Down) || state.IsKeyDown(Keys.S);
        //MouseDown
        if (dArrowKeyDown)
        {
            move(-moveSpeed);
        }

        //=========================//
        //=====user input end======//
        //=========================//
    }

这是整个渲染/输入循环,是否可以添加MouseEventArgs?不确定MouseEventArgs是否在循环时也循环。有人可以在这里帮我吗?

1 个答案:

答案 0 :(得分:0)

我不确定您要的是什么,但是如果您想从鼠标事件中获取移动方向,除非鼠标事件具有最后位置和新位置属性,否则您需要跟踪最后一个位置(x和y值)并将其与当前位置一起使用以计算角度。

有关角度的计算,请参阅 Calculating the angle between the line defined by two points

我可以提供更多信息更好的答案。