LoginSignup
3
2

More than 5 years have passed since last update.

phina.jsでGamePadを使う

Posted at

この記事はphina.js Advent Calendar 201613日目の記事です。
前日→Flowを使った非同期処理の基本 by alkn203さん

ついに念願のXBOX360コントローラをPCにつなぐレシーバーを手に入れたぞ!

むしろなんで今やっと買ったのよ、という感じですが、これでPCでダラバーデススマ大復活をキーボードでやる苦痛から解放されるぜイエーイ。いやエスプレイドをキーボードでやってガラ婦人まで行けるのでそんな苦痛でもないのですが。
しかしまほシューはキーボードでやってて、オールクリアどうしても出来なかったのが、パッドを導入してあっという間にオールクリア出来ました。
やっぱりパッドだと操作が楽ですね。

という事で、あまりにも嬉しかったのでphina.jsでgamepadを使ってみました。

phina.GamapadManager

phina.jsではゲームパッドをphina.GamapadManagerで簡単に扱う事が出来ます。

GamepadManagerの定義
var gamepadManager = phina.input.GamepadManager();

//Update内等で毎フレーム呼ぶ必要があります
gamepadManager.update();
GamePadの取得
//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の挙動が違うのなんとかしてください。

おしまい

実際のゲームにも導入したいですが、ブラウザ間の互換性とか、キーコンフィグ画面作るとか考えるとちょっと億劫かなーって感じがしますね。汎用で使えるコンフィグ画面を作りたい所です。
自分の環境だとこんなだったぜー、見たいな事があったらコメント頂けると嬉しいです。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2