DXライブラリでジョイパッド状態の詳細な取得
ハットスイッチが使えねーじゃん!とか思っていたら、実は使えた話。
詳細はここ
概要を書いておくと
作り始めたときとコントローラーの想定仕様かわってるよ!なのでDirectInputから直接もらう方法作ったよ!ってことらしい。リファレンスにのってないってことは、仮仕様なんだろうか?
まずはジョイパッドの状態を格納する構造体
// DirectInput のジョイパッド入力情報 struct DINPUT_JOYSTATE { int X ; // スティック0のX軸パラメータ( -1000〜1000 ) int Y ; // スティック0のY軸パラメータ( -1000〜1000 ) int Z ; // スティック0のZ軸パラメータ( -1000〜1000 ) int Rx ; // スティック1のX軸パラメータ( -1000〜1000 ) int Ry ; // スティック1のY軸パラメータ( -1000〜1000 ) int Rz ; // スティック1のZ軸パラメータ( -1000〜1000 ) int Slider[ 2 ] ; // スライダー二つ unsigned int POV[ 4 ] ; // ハットスイッチ4つ( -1:入力なし 0:上 4500:右上 9000:右 13500:右下 18000:下 22500:左下 27000:左 31500:左上 ) unsigned char Buttons[ 32 ] ; // ボタン32個( 押されたボタンは 128 になる ) } ;
次にそこにデータを格納するための関数
GetJoypadDirectInputState( DX_INPUT_PAD1, &joy ) ;
パッドの仕様によって、スティックの上下やらが逆になったりするらしいが、これでやりたいことが出来そう