いつもお世話になっております。シノニムです
現在ゲームパッド(PS2用コントローラー・DUAL SHOCK2)をつかったゲームを作成しています
いざゲームの操作を家でやろうとしたら、十字キーのみが反応してくれません
コントロールパネルから見てみると、しっかり入力は受け取っている様子でした
学校で貸出しているパッドではしっかりと十字キーも動いていて、コンバータも同じものを使用しています
ネットで検索するも、なかなか求めていた答えが見当たらないので質問させていただきました
OS:windows XP
環境:Visual C++
解決方法などご存知の方いましたら、アドバイスください
ゲームパッド対応のゲームを作っています
Re:ゲームパッド対応のゲームを作っています
自分は「ELECOM JC-U2312FSV」を使っていますが、同じような現象に遭遇しています。
やはり十字キーが反応せず、ゲームでは使用していないアナログスティックを動かすと反応します。
しかしこのゲームパッドは「ANALOG」というボタンがついていて、これを押すとアナログモードからデジタルモードに切り替わります。
すると、十字キーが反応するようになりました。
(その代わりアナログスティックには別ボタンの機能が割り振られました)
このゲームパッドはアナログモードでは十字キーにPOVなる機能が割り振られているようです。
Point of Viewの略らしいですが……すみません、よくわかりません(私も今調べたので)。
この現象はハットスイッチ問題などと呼ばれているようです。
もしかするとこれかも知れませんね。
具体的な解決法でなくてすみません。
私は上述の方法で満足してしまっているので……。
やはり十字キーが反応せず、ゲームでは使用していないアナログスティックを動かすと反応します。
しかしこのゲームパッドは「ANALOG」というボタンがついていて、これを押すとアナログモードからデジタルモードに切り替わります。
すると、十字キーが反応するようになりました。
(その代わりアナログスティックには別ボタンの機能が割り振られました)
このゲームパッドはアナログモードでは十字キーにPOVなる機能が割り振られているようです。
Point of Viewの略らしいですが……すみません、よくわかりません(私も今調べたので)。
この現象はハットスイッチ問題などと呼ばれているようです。
もしかするとこれかも知れませんね。
具体的な解決法でなくてすみません。
私は上述の方法で満足してしまっているので……。
Re:ゲームパッド対応のゲームを作っています
DXライブラリですよね
GetJoypadPOVState( )関数で取得できるようです
Dxlib.hより
extern int GetJoypadPOVState( int InputType, int POVNumber ) ; // ジョイパッドのPOV入力の状態を得る( 単位は角度の100倍 中心位置にある場合は -1 が返る )
int Pov;
Pov = GetJoypadPOVState( DX_INPUT_PAD1, 0 );
のようにしてPovが
0:上
4500:右上
9000:右
のように判断すればよさそうです
GetJoypadPOVState( )関数で取得できるようです
Dxlib.hより
extern int GetJoypadPOVState( int InputType, int POVNumber ) ; // ジョイパッドのPOV入力の状態を得る( 単位は角度の100倍 中心位置にある場合は -1 が返る )
int Pov;
Pov = GetJoypadPOVState( DX_INPUT_PAD1, 0 );
のようにしてPovが
0:上
4500:右上
9000:右
のように判断すればよさそうです