Wiiリモコンの値をJavaScriptで取得する方法(Wiiインターネットチャンネル)

任天堂のQ&Aサイトで、Wiiリモコンの値を取得する方法が公開されていることを知人から教えてもらいました。


インターネットチャンネル向けのウェブページを作りたいのですが…。 : Q&A – Wii

インターネットチャンネルの拡張機能について知りたい
Wiiインターネットチャンネルでは特別な JavaScript を用いる事でWiiリモコンのひねりや
テレビとの距離、複数のコントローラの状態を取得する事ができます。

手元にWii本体の実機がないので(Wiiリモコンはある^^)まだ試していませんが、こんな感じでJavaScriptからWiiリモコンの値が取れるっぽいですね。

if (window.opera && window.opera.wiiremote) {
  var num = 0; // wiiremote number 0,1,2,3
  var pad = window.opera.wiiremote.update(num);
  if (pad.isEnabled && pad.isDataValid) {
    //
    var x = null;
    var y = null;
    if (pad.dpdValidity > 0) {
       x = pad.dpdX;
       y = pad.dpdY;
    }
    //
    // if (!pad.isBrowsing) { var hold = pad.hold; }
    var button_left  = (pad.hold & 1);
    var button_right = (pad.hold & 2);
    var button_up    = (pad.hold & 4);
    var button_down  = (pad.hold & 8);
    var button_plus  = (pad.hold & 16);
    var button_2     = (pad.hold & 256);
    var button_1     = (pad.hold & 512);
    var button_B     = (pad.hold & 1024);
    var button_A     = (pad.hold & 2048);
    var button_minus = (pad.hold & 4096);
    //
    var distance = pad.dpdDistance;
    var roll_angle = Math.atan2(pad.dpdRollY, pad.dpdRollX) * 180.0 / Math.PI;
    //
    // hogehoge
  }
}

numの値を変えれば、2本目以降のリモコンの値も取れるみたいです。

画面からの距離(dpdDistance)やリモコンの傾き(dpdRollY, dpdRollX)の情報が取れるのは面白いですね。
Wiiリモコンを用いたインタフェースの研究開発とかを個人の家庭用ゲーム機で実現できるので、hackしがいがあるかも。

拡張機能アツすぎます。

実際に動いたー!っていう人がいればぜひ教えてください。

コメントは受け付けていません。