ねねチャレ 2日目「GamePad開放!」

2日目にしてだいぶ香ばしくなってきましたw!

本日は軽めのメニューです!

今日の目的

XInputを使用してGamePadの入力をゲームに反映させます。
GamePadはねねっちの作ったゲームの1.2作目共に使用していましたので当然やっていきます。

ちなみにXInputはXbox 360コントローラーのAPIです。

XInput の基礎知識

お手軽にコントローラデバイスを扱える・・・素晴らしい。

XInput(と言うかデバイス全般)

ゲームにもよりますが、殆どの場合更新FPSを超える速度でデータ取得を行う必要はありません。 基本的にはフレームごとに状態を取得し、更新が行われるまでその情報を参照します。

最小限のコードはこちらになります。

gist.github.com

今回の差分は以下の構成です。

バイスの状態を取得 : 29行目

   第一引数にはGamePadのIDが入ります。(最大4つ,0~3)

取得した状態の参照 : 31~41行目

   定義されたビットをマスクにして状態を取得しています。
   今回は終了と、バイブレーションの起動を行っています。

注意点としては、バイブレーションの終了命令を送らないと止まらない可能性が有るようです。
(私の環境では、バイブの開始、終了共に遅延が有りました。環境依存なのかもしれません)

まとめ

非常に簡単にGamePadが扱えるようになりました。
キーボードの入力と似たような感じですが、マウス入力の実装よりは格段に楽です。
バイスの入力としては非常にコスパが高いと思います。

3日目は「Utilityの導入とポリゴン描画」を行う予定です!

進捗!

画的な進捗はありません!

github.com