トップページ > 記事閲覧
GetJoypadDirectInputStateの値
名前:yuran 日時: 2016/12/07 18:42

いつもお世話になっております。 GetJoypadDirectInputStateで得られる、struct DINPUT_JOYSTATEの各メンバの値について質問があります。 手元にあるPS2のコントローラを、USB変換するデバイスでPCへ繋いでいますが、 それのDINPUT_JOYSTATE の各メンバを確認した所、右アナログスティックにはZとRzが割り当てられています。 このZとRzのニュートラル時の値が、アナログスイッチONとOFFで変わりますがこれはUSB変換するデバイスの仕様なのでしょうか? アナログスイッチをONにすると正常に動作します。 ニュートラルでZとRz双方の値が0。右スティックを上下左右に傾けるとZとRzがそれぞれ-1000〜1000まで入力に合わせて変化します。 アナログスイッチをOFFの状態にしているとニュートラルでZとRzの値に1000が常に入っています。  少し不安に思ったので質問させていただきたいのですが、 今回のPS2のコントローラのZとRzについてはアナログスイッチON時に使用されるメンバですので当てはまりませんが、 (全く使われていないRxとRyはアナログスイッチのON、OFFに関わらず0固定なので) ゲームパッド上で全く使用される予定のない(割り当てられていない)各スティックのパラメータ(Z,Rx,Ry,Rzのうちのいずれかもしくは全て)は、 必ず値が0という認識で問題ないでしょうか? それともゲームパッドによってはそのゲームパッド内で全く使用しないスティックのメンバに0以外が入っている可能性がありますか? お手隙の際にでもお教え頂けますと幸いです。
メンテ

Page: 1 |

Re: GetJoypadDirectInputStateの値 ( No.1 )
名前:管理人 日時:2016/12/08 01:31

> このZとRzのニュートラル時の値が、アナログスイッチONとOFFで変わりますがこれはUSB変換するデバイスの仕様なのでしょうか? はい、GetJoypadDirectInputState は DirectInput から得られる値をそのまま 返しているので、DINPUT_JOYSTATE のメンバー変数に代入される値はデバイスの ドライバ依存となります > アナログスイッチをOFFの状態にしているとニュートラルでZとRzの値に1000が常に入っています。 お使いのPS2用コントローラUSB変換デバイスのドライバがそのようになるように なっているのだと思います > ゲームパッド上で全く使用される予定のない(割り当てられていない)各スティックのパラメータ(Z,Rx,Ry,Rzのうちのいずれかもしくは全て)は、 > 必ず値が0という認識で問題ないでしょうか? デバイスのドライバ次第なので、全く使用される予定のないパラメータが必ず0になる保証はありません なので『その認識は問題があります』となります > それともゲームパッドによってはそのゲームパッド内で全く使用しないスティックのメンバに0以外が入っている可能性がありますか? はい、デバイスのドライバ次第でゲームパッド内で全く使用しないスティックのメンバに0以外の 値が入っている可能性はあります なので使用されないパラメータは必ず0になるという前提でプログラムを組むのは避けたほうが良いです
メンテ
Re: GetJoypadDirectInputStateの値 ( No.2 )
名前:yuran 日時:2016/12/08 02:33

ご返答いただきありがとうございます。 そうですか・・・うーん厄介な仕様ですね。 ゲームパッドの入力別押下フレーム数を管理しようかと思っていたのですが、 ドライバ次第で未使用のスティックのメンバに0以外の値が入る可能性があるということは 何も押していないのに延々とカウンタが回り続けるゲームパッドもあり得ますね すべてのゲームパッドを想定して制作するのも不可能ですし、 プログラム側だけで完結する対処はできそうにないですね・・・ ゲーム起動時か、設定などでユーザーさんがコントローラに触れていない状態にしてもらった上で、 GetJoypadDirectInputState を行って0以外の入力があるスティックのメンバは 無効にするとかしないとだめそうですね。 もしくは右アナログスティックをあきらめるか、 いっそXInputのみ対応にした方が楽そうですが・・・ お教え頂きありがとうございました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存