ジョイスティックの状態に忠実なキャラクター移動

アバター
MoNoQLoREATOR
記事: 284
登録日時: 14年前
住所: 東京

ジョイスティックの状態に忠実なキャラクター移動

投稿記事 by MoNoQLoREATOR » 13年前

ジョイスティック(アナログスティック)の状態(倒されている向き、傾き具合)に忠実に従い、キャラクターを移動させるシステムを完成させました。
そしてついでにジョイスティック関連の処理を簡単にする構造体(メンバ関数あり)をつくりました。

↓ソースコードです
► スポイラーを表示
~解説~

1つのコントローラにつき1つの実体を持つことを想定しています。
DXライブラリのジョイパッド関連の機能を使いやすくすることが目的です。
コンストラクタの第1引数には、管理したいコントローラーの識別子(DX_INPUT_PAD1,DX_INPUT_PAD2,DX_INPUT_PAD3,DX_INPUT_PAD4の何れか)を指定します。

◎メンバ変数
 padx・・・ジョイスティックのx軸の入力情報
 pady・・・ジョイスティックのy軸の入力情報
 x・・・最高速度の何倍で移動させればよいか(x座標)
 y・・・最高速度の何倍で移動させればよいか(y座標)
 dx・・・最高速度の何倍で移動させればよいか(x座標)※傾き具合を無視
 dy・・・最高速度の何倍で移動させればよいか(y座標)※傾き具合を無視
 padNum・・・接続されているコントローラーの数
 padState・・・パッドの入力情報
 keyState・・・キーボードの入力情報

 x,yの使い方については、上記のソースコードを見てください。
 キャラクターを一定の速度で移動させたい時に便利で、
 ジョイスティックの傾き具合によって速度が調整されます。
 パッドとキーボードの状態を同時にチェックしたい場合はメンバ関数を使ってください。

◎メンバ関数
 bool check(int padInput, bool perm = true)
 特定のパッドの入力状態を返します。
 詳細はDXライブラリリファレンスのGetJoypadInputStateの項を参照していただくとわかると思います。
 返り値 ・・・ true:押されている
         false:押されていない
 第2引数にtrueを指定すると対応するキーボードが押された場合もtrueが返されます。

 void config(int PadInput, int KeyInput1)
 パッドに対応させるキーボードを設定できます。
 第1引数に設定したパッドを、第2引数に対応させたいキーボードを指定します。
 ちなみに1つのパッドにつき4つまで設定できます。
 これについても詳細はここをご参照ください。

 void vib(int time = -1, int power = 1000)
 ジョイパッドを振動させます。
 第1引数には振動させる時間(ミリ秒)を、第2引数には振動の強さ(0~1000)を指定できます。

 void stop()
 ジョイパッドの振動を停止させます。

コメントはまだありません。