こんにちは!倉本です.
enchant.jsについて紹介しようかと思ったのですが,
西崎君に先を越されたのでwiiリモコンのJavaScriptについて書きます!
wiiインターネットチャンネルでは,特別なオブジェクトを用いるだけで,
wiiリモコンのひねりやセンサーバーとの距離を簡単に取得できます.
window.opera.wiiremote オブジェクト
これがwiiリモコンのプロパティを保持したオブジェクトになります.
このオブジェクトのupdate(num)というメソッドを呼び出すことで
リモコンの状態を保持したオブジェクトが返ってきます.
numはプレイヤーの番号で,0~3の数字を指定します.
オブジェクトのプロパティは以下の一覧の通りです.
プロパティ | 説明 |
---|---|
isEnabled | wiiリモコンが接続されている場合,1. |
isDataValid | データが有効な場合,1. |
isBrowsing | ブラウジングしているwiiリモコンの場合,1 |
dpdX dpdY |
ポインティング位置. |
hold | ボタンを押している間,対応したボタンのフラグが立つ. ※ブラウジングしているwiiリモコン(isBrowsing が1であるwiiリモコン)は Bボタンのみ取得できる. |
dpdRollX dpdRollY |
カーソルの傾き方向ベクトル. ベクトルの長さは 1 ,右下がプラス方向. |
dpdDistance | センサーバーとwiiリモコンの距離.遠いほど大きい値になる. |
dpdValidity | ポインティング位置を認識するために用いたオブジェクトの個数. |
それでは,実際に使ってみるために以下のようにJavaScriptをかいてみました.
(function(){ var defaultDistance = 0; $(document).ready(function(){ setInterval('UpdateWiiRemote()', 100); }); function UpdateWiiRemote(){ var pad = opera.wiiremote.update(0); if (pad.isEnabled && pad.isDataValid){ if(defaultDistance == 0){ defaultDistance = round2(pad.dpdDistance); } if(round2(rad * 180 / Math.PI) >= 45){ $("#action").html("右!"); } else if(-45 >= round2(rad * 180 / Math.PI)){ $("#action").html("左!"); } else if(defaultDistance-0.2 >= round2(pad.dpdDistance)){ $("#action").html("前!"); } else if(round2(pad.dpdDistance) >= defaultDistance+0.15){ $("#action").html("後!"); } else{ $("#action").html("ストップ"); } } else{ $("#action").html("未接続"); } } function round2(v){ return Math.round(v*100)/100; } })();
簡単に解説しますと,
・opera.wiiremote.update(0)で1Pのwiiリモコンの情報取得.
・isEnabledとisDataValidでwiiリモコンが接続されていて,データが有効か確認.
・有効であった場合,そのプロパティに応じてアクションを判定.
以上をsetIntervalでまわします.
アクションついて,
傾きは左右どちらかに45度以上傾いているかどうかで判断します.
距離は最初に1度,デフォルト距離としてセンサーバーとwiiリモコンの距離を保持しておき,それと現在の距離を比べて判断します.
こんな感じで傾きと距離の判定を活かして,アクションゲームっぽいのが作れそうですね!
誰かやってみてください!(他力本願)
お粗末な内容でしたが最後まで読んでくれた方,ありがとうございました.
Mohon ijin berpromosi. service Ac segala jenis merk. kami service Ac mencakup wilayah coverage seluruh Surabaya, Gresik, Sidoarjo. kami juga menerima jasa service perbaikan AC bongkar dan pasang AC. pekerjaan kami cepat, tepat, profesional, harga kompetitif di banding harga jasa luaran.
返信削除service ac split sidoarjo
tukang service ac sidoarjo
service ac surabaya sidoarjo
service ac surabaya selatan
service ac surabaya timur
service ac surabaya barat
service ac surabaya utara
service ac kota surabaya
SPLIT-TYPE AIR CONDITIONERS
MULTI-SPLIT AIR CONDITIONERS
CHILLED WATER FAN COIL UNITS
VRF AIR CONDITIONERS
CHILLERS
WINDOW-TYPE AIR CONDITIONERS
http://jualjasaacsurabaya.blogspot.com
Segera hubungi kami, dan kami akan datang kerumah Anda 24 Jam Non Stop.
(Hari Sabtu / Minggu / Hari Libur buka)
PIN BBM : 54BE0B4B / 5474CD93 / TELP : 085645475574