DirectInputのコントローラーでキー入力を取得する方法について気になったので、調べてみました。
私も、ぽんでりさんと同じJC-U3613Mを持っているので、DirectInputモードにして動作をチェックしました。
結論から言うと、JC-U3613Mの十字キーは、hatスイッチ=POVキーと呼ばれるもので、ボタンとは別に動作を取得できることがわかりました。
このコントローラーの十字キーは、
gamepad_hat_count(pad_id)
でハットスイッチの個数を取得して、
gamepad_hat_value(pad_id, hat_switch_num)
で、取得したいハットスイッチの番号(hat_switch_num)を指定することで、押されたボタンがわかります。
※hat_switch_numは0から始まるので、先に取得したハットスイッチ個数-1
Up = 1、Right = 2、Down = 4、Left = 8の値が返ってきます。同時押しされたときは右上なら1と2を足した3が返ってきます。
コントローラーのボタンは、
・軸(ぐりぐりのスティック)
・ボタン(AとかYとかLとかRとか普通のボタン)
・ハットスイッチ(十字キーの形が多い?POVキーとも呼ばれる)
の三種類があり、GMSでも取得するために別の関数があります。
今回、ボタンは13個ですが、軸は2つ、ハットスイッチは1つとなります。
このへんに詳しいことが書いてありましたので、参考になりました。
https://manual.yoyogames.com/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/Gamepad_Input.htm
通報 ...
うおおおおお!!ありがとうございます!!
参考にさせて頂きます!!!感謝感激です!!!