JavaScriptでゲームパッド
もともとは「 GamePad API 」として W3C が制定しているものだが、なぜか ブラウザー 毎に実装がマチマチで、これまた ブラウザー 毎に処理を分けないといけない。 そして、2014年現在は、Chrome37と、Firefox31でしか ゲームパッド は使用出来ない( Safari と IE では未実装)。 なので、実行しているブラウザを自動判別し、 Chrome と Firefox の両方でほぼ同じデータの取れるものだけを配列で返すライブラリを作ってみた。 両方のブラウザでほぼ同じデータが取れるものは下記になる。 ボタン1〜4に関しては各 ゲームパッド によって違いはあるが、ボタンが4つあればボタン1〜4になっていると思われる。 ボタン5と6は、人差し指で押すボタンが返ってくる。 垂直軸と水平軸は−1、0、1の3つの値を返す。 さらに、 Xbox360 コントローラーでは2つのアナログスティックの値を−1〜1の範囲で返すようにしている。 しかし、アナログスティック1の値は垂直軸、水平軸の値とリンクしているので、アナログスティック1の値が振り切る(1、もしくは-1になる)と、 十字キー を押したのと同じ状態になる。 Xbox360 ではボタンは16個あるのだが、 ファミコン もどきコントローラーと Xbox360 コントローラーで同じような値を返すのがボタン1〜6までなので、このライブラリではボタン6までしか値を返さない。 Xbox360 コントローラーでは 十字キー の値はボタンとして返ってくるのだが、ライブラリのほうで水平軸、垂直軸の値として返るように違いを吸収している。 ライブラリは github にあるので、普通にクローンすると使えるようになる。 digitarhythm/gamepadprocedure · GitHub ファイル自体は CoffeeScript なので使用する時は コンパイル してご使用ください。 コンパイル したファイル「 gamepadprocedure.js 」を読み込むと、「 gamepadProcedure() 」という関数が使用出来るようになるので、ゲームなどのループ処理内でこれを呼ぶことで ゲームパッド の状態が配列として返ってくる。 Safari や IE の場合は空の配列が返される。