微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

操纵杆坐标

如何解决操纵杆坐标

大家好,我需要你的帮助,使用开放 TK 在 dot net framework 4.5 上使用 Xaml 我想通了。使用以下代码。我想在 Windows 窗体上复制它,但打开 TK 不喜欢窗体。我做了很多谷歌搜索,发现了 2 个选项 SlimDX 和 SharpDX directinput。我的目标是使用操纵杆通过操纵杆输入沿表单移动控件。我似乎无法像使用开放式 TK 那样复制轴 1 和轴 2。我正在寻找示例 0 或 1 和 -1,如 XAML 的 c3 清晰代码所示。

using OpenTK.Input;

private dispatcherTimer clock;
private GamePadState oldgstate;
private JoystickState oldjstate;
private int activeGamepad = 0;
private int activeJoystick = 0;


 public MainWindow()
    {
        InitializeComponent();
        createNewTimer();
        oldgstate = GamePad.GetState(activeGamepad);
        oldjstate = Joystick.GetState(activeJoystick);
    }

    //public Direction TestOpenTK.MainWindow.MyProperty { get; set; }

    private void createNewTimer() {
        clock = new dispatcherTimer();
        clock.Tick += new EventHandler(checkGamePads);
        clock.Interval = new TimeSpan(0,25);
        clock.Start();
    }

    private void checkGamePads(Object sender,EventArgs e)
    {
        var gState = GamePad.GetState(activeGamepad);
        var jstate = Joystick.GetState(activeJoystick);


        if (!gState.Equals(oldgstate))
        {
            txtGamePadDebug.Text = gState.ToString();
        }

        if (!gState.Equals(oldjstate))
        {
            //txtJoystickDebug.Text = jstate.ToString() + Environment.NewLine + " Axis 1 = " + jstate.GetAxis(JoystickAxis.Axis1).ToString()
            //     + Environment.NewLine + " Throttle Axis 2 = " + jstate.GetAxis(JoystickAxis.Axis2).ToString() + Environment.NewLine + " Axis 3 Rotation = " +
            //     jstate.GetAxis(JoystickAxis.Axis3).ToString() + Environment.NewLine + " Axis 4 = " + jstate.GetAxis(JoystickAxis.Axis4).ToString();
            for (int i = 0; i < 4; i++)
            {
                var state = Joystick.GetState(i);

                if (state.IsConnected)
                {

需要使用 SharpDX 或 SlimDX 获得类似的 Axis 或弄清楚如何在 windows 窗体上使用 open TK

float x = state.GetAxis(JoystickAxis.Axis0); float y = state.GetAxis(JoystickAxis.Axis1);

                    //Convert and round x and y
                    int X = (int)Math.Round(x);
                    int Y = (int)Math.Round(y);

                    //Set axis direction using integers X and Y
                    if (X == 0 && Y==1)
                    {
                        // N
                        txtJoystickDebug.Text = "north";
                    }

                    if (X == 1 && Y == 1)
                    {
                        // NE Up and right
                        txtJoystickDebug.Text = "north East";
                    }

                    if (X == 1 && Y == 0)
                    {
                        //E
                        txtJoystickDebug.Text = "East";
                    }

                    if (X == 1 && Y == -1)
                    {
                        //SE Down Right
                        txtJoystickDebug.Text = "South East";
                    }

                    if (X == 0 && Y == -1)
                    {
                        //S
                        txtJoystickDebug.Text = "South";
                    }

                    if (X == -1 && Y == -1)
                    {
                        // SW Down Left
                        txtJoystickDebug.Text = "South West";
                    }

                    if (X == -1 && Y == 0)
                    {
                        //W 
                        txtJoystickDebug.Text = "West";
                    }

                    if (X == -1 && Y == 1)
                    {
                        //NW Up or West
                        txtJoystickDebug.Text = "north West";

                    }

                    //Slider aka throttle axis
                    //float T = state.GetAxis(JoystickAxis.Axis2);

                    // Print the current state of the joystick
                    //Console.WriteLine(T);
                    //txtJoystickDebug.Text = "X = " + Math.Round(x).ToString() + Environment.NewLine + "Y = "  + Math.Round(y).ToString()
                    //    + Environment.NewLine + " Throttle = " + T.ToString();
                }
            }
        }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。