ページ 11

ゲームパッド対応にしたらキーボードで指定していないキーが反応してしまいます

Posted: 2015年11月23日(月) 23:51
by もるも
お世話になっています。
龍神録プログラミングの館の8章の「キーコンフィグに対応させてみよう」
を参考にして自分で作っているゲームに組み込んで見たのですが。

ゲームパッドは特に問題はないのですが、
キーボードでは指定していないのにZとXとC、QやWのキーでも反応してしまいます。

コード:

Input_Pad_or_Key(&Pad[PAD_ATK ] ,CheckKeyState(KEY_INPUT_A ));
//↑ Aを押しても、Zキーを押しても反応してしまう
ほかにも右のシフトキーを押すと、
パッドに対応したキーすべて押されている状態になってしまいます。
ボタンが効かないということはなく、
どうしてこうなってしまうのかわからなくて質問させていただきました。

Visual C++ 2010 、DXライブラリを使用しています。
ゲームパッドはスーファミのコントローラー型で12個ボタンがあるものです。
よろしくお願いします。

Re: ゲームパッド対応にしたらキーボードで指定していないキーが反応してしまいます

Posted: 2015年11月24日(火) 13:22
by プラム
Input_Pad_or_Key関数がどのようになっているかがわからないので何とも言えませんが。

『input_Pad_orkey』は、名前から察するに、パッドまたはキーの入力情報を処理する関数なのでは?

何をしたいのかはいまいちわかりませんが。PadとKeyの情報処理が混ざっているような気がします

Re: ゲームパッド対応にしたらキーボードで指定していないキーが反応してしまいます

Posted: 2015年11月24日(火) 22:07
by もるも
ノウルver2.7.7v  さん
Input_Pad_or_Key関数はそれぞれ対応したパッドとキーボードのキーがどちらが長く押されているかを比較し、大きい値のほうを返し、パッドとキーボードで同時入力出来ないようにしています。


追記させていただきます。
ゲームパッドの4番目のボタン(攻撃ボタン)をキーボードのAボタンに、
ゲームパッドの5番目のボタン(メニュー)をキーボードのMボタンに設定したくて

Input_Pad_or_Key(&Pad[PAD_ATK ] ,CheckKeyState(KEY_INPUT_A ));
Input_Pad_or_Key(&Pad[PAD_MENU] ,CheckKeyState(KEY_INPUT_M ));
のように設定してちゃんと思った通りに動いてくれるのですが、

そのほかに特に何も設定してないのに。
パッドの
0~3番目 ↑↓→←キー
4    Z
5    X
6    C
7    A
8    S
9    D
10    Q
11   W
全12キー(連射キー?) 右Shiftキー
が対応してしまいます。

PCとゲームパッドが設定しているのかなぁとおもうのですが、
どこをどうすればいいかわかりません。
違うゲームパッドにしたほうがいいのでしょうか??

Re: ゲームパッド対応にしたらキーボードで指定していないキーが反応してしまいます

Posted: 2015年11月24日(火) 22:34
by Dixq (管理人)
この関数の仕様を確認してください。
http://homepage2.nifty.com/natupaji/DxL ... .html#R5N4
引数に何を与えるかで返り値が変わります。
DX_INPUT_KEY_PAD1
を渡すとキーボードとパッド混合の値が返ります。
本関数の引数には何を与えていますか?

Re: ゲームパッド対応にしたらキーボードで指定していないキーが反応してしまいます

Posted: 2015年11月24日(火) 23:33
by もるも
引数にDX_INPUT_KEY_PAD1を渡していました。
DX_INPUT_PAD1を渡したら上手くいきました。
DXライブラリの関数をちゃんと理解していなくて使っていました・・・。
すみません。

Dixq (管理人)さん ありがとうございました。