この記事はphina.js Advent Calendar 201613日目の記事です。
前日→Flowを使った非同期処理の基本 by alkn203さん
#ついに念願のXBOX360コントローラをPCにつなぐレシーバーを手に入れたぞ!
むしろなんで今やっと買ったのよ、という感じですが、これでPCでダラバーやデススマや大復活をキーボードでやる苦痛から解放されるぜイエーイ。いやエスプレイドをキーボードでやってガラ婦人まで行けるのでそんな苦痛でもないのですが。
しかしまほシューはキーボードでやってて、オールクリアどうしても出来なかったのが、パッドを導入してあっという間にオールクリア出来ました。
やっぱりパッドだと操作が楽ですね。
という事で、あまりにも嬉しかったのでphina.jsでgamepadを使ってみました。
#phina.GamapadManager
phina.jsではゲームパッドをphina.GamapadManagerで簡単に扱う事が出来ます。
var gamepadManager = phina.input.GamepadManager();
//Update内等で毎フレーム呼ぶ必要があります
gamepadManager.update();
//GamePad1つ目
var gamepad_1 = gamepadManager.get(0);
//GamePad2つ目
var gamepad_2 = gamepadManager.get(1);
//十字キーの上が押されているか
var up = gamepad_1.getKey("up");
//Aボタンが押されているか
var A = gamepad_1.getKey("A");
//L1ボタンが押されているか
var L1 = gamepad_1.getKey("L1");
//二次元ベクトルで格納されてます。
//左側のアナログスティック
var left = that.gamepad_1.getStickDirection(0);
//右側のアナログスティック
var right = that.gamepad_1.getStickDirection(1);
#テストコード
http://runstant.com/minimo/projects/GamepadTestSample
左右でトマピコを移動、上キーまたはAボタンでジャンプします。
左側のアナログスティックでも同様の操作が可能です。
取得キーコードの違いから、Chrome以外は正しく動きません。
っていうか、ブラウザ毎でGamepad APIの挙動が違うのなんとかしてください。
#おしまい
実際のゲームにも導入したいですが、ブラウザ間の互換性とか、キーコンフィグ画面作るとか考えるとちょっと億劫かなーって感じがしますね。汎用で使えるコンフィグ画面を作りたい所です。
自分の環境だとこんなだったぜー、見たいな事があったらコメント頂けると嬉しいです。