ゲームパットを使うには?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
電気屋

ゲームパットを使うには?

#1

投稿記事 by 電気屋 » 15年前

どうも、たびたびお世話になっています。
今回は、ゲームパットについてお聞きしたいと思っています。
ゲームパットからの入力データを得るにはどうしたらよいですか。一応ジョイパットのプログラムを参考にしたり、ほかのサイトのサンプルを使ったりして作成はしていますが、ゲームパットからの入力をうまく認識しません。サンプルをおいてくださると助かります。大変勝手なお願いですが、よろしくお願いします。

一応サンプルも貼り付けておきます。
要点
・ゲームパットから入力されたデータを確認する

最終目的
・キャラクターを動かす

使用コントローラ
・ELECOM(JC-2410TWH)

御津凪

Re:ゲームパットを使うには?

#2

投稿記事 by 御津凪 » 15年前

MSDN の下記のページにジョイスティック(ゲームコントローラのこと)を使用するためのチュートリアルがあります。
http://msdn.microsoft.com/ja-jp/library ... 85%29.aspx

一応、こちらでも適当なサンプルを書いてみますが…。

御津凪

Re:ゲームパットを使うには?

#3

投稿記事 by 御津凪 » 15年前

書いてきました。
コードが長いので添付しておきます。

一応、自作ライブラリから一部変更しての書き下ろしなので、何か問題があるかもしれません。

とりあえず、これに沿ってプログラムを組めば動くはずです。


なお、ジョイパッドの方向キーの状態を取得する場合、 DIJOYSTATE2(DIJOYSTATE) 構造体の lX, lY メンバ変数で下記のような条件で取得できます。

上: lY < 0 の時
下: lY > 0 の時
左: lX < 0 の時
右: lX > 0 の時

このとき、PSコントローラのようなスティックでも操作できるようになるのですが、
スティックはなにも触らなくても必ず 0 になることはなく、若干の偏りが発生するため、
上記のような判定でキャラクターを動かすようにしていた場合は、スティックが有効になったとたん、
勝手に移動することになってしまいます。

これを防ぐためには遊びの部分を作ることで対処します。
だいたい +-300 程度(軸の可動幅量を +-1000 とした時)でいいでしょう。
つまり、

上: lY < -300 の時
下: lY > +300 の時
左: lX < -300 の時
右: lX > +300 の時

となります。

電気屋

Re:ゲームパットを使うには?

#4

投稿記事 by 電気屋 » 15年前

どうもありがとうございました。

電気屋

Re:ゲームパットを使うには?

#5

投稿記事 by 電気屋 » 15年前

プログラムを組んだのですが、うまくいきません。どこがいけなかったでしょうか?

プログラム
if ( Key[ KEY_INPUT_UP ] == 1 || (GetJoypadInputState(DX_INPUT_PAD1) & PAD_INPUT_UP ) == 1){ //上ボタンが押されたら
ch.muki=0;} //上向きフラグを立てる
else if( Key[ KEY_INPUT_LEFT ] == 1 || (GetJoypadInputState(DX_INPUT_PAD1) & PAD_INPUT_LEFT ) == 1){ //左ボタンが押されたら
ch.muki=1;} //左向きフラグを立てる
else if( Key[ KEY_INPUT_DOWN ] == 1 || (GetJoypadInputState(DX_INPUT_PAD1) & PAD_INPUT_DOWN ) == 1){ //下ボタンが押されたら
ch.muki=2;} //下向きフラグを立てる
else if( Key[ KEY_INPUT_RIGHT] == 1 || (GetJoypadInputState(DX_INPUT_PAD1) & PAD_INPUT_RIGHT) == 1){ //右ボタンが押されたら
ch.muki=3;} //右向きフラグを立てる
else //何のボタンも押されてなかったら
ch.walking_flag=0; //歩かないフラグを立てる


4方向に歩くプログラムのKEY_INPUTの後にGetJoypadInputStateをいれて試していますが、DAWNしか反応しません。コントローラがいけないのかと、コントロールパネルで動作確認をしたのですが、どこにも異常はありませんでした。

閉鎖

“C言語何でも質問掲示板” へ戻る