Wiiリモコン

あなたのパソコンにはBluetooth(ブルートゥース)がついていますか?
もしついていたら、WiiリモコンをつかってScratchのゲームをつくってみましょう!
今回は、Wiiリモコンをつかうために、どんなソフトがいるのか?を
せつめいしていきます。

Bluetoothをつかうには

もし、つかっているパソコンにBluetoothがついていなければ
Bluetoothのレシーバーが必要です。

うちのパソコンは古くて当然Bluetoothなんてついていないので
http://www2.elecom.co.jp/network/bluetooth/lbt-uan05c2/
これを買いました。1500円ぐらいでした。
image_01_top


別にこれじゃなくてもいいんですが
電気屋さんに行って「Bluetoothのアダプタください」って言えばわかるとおもいます。
でも「オーディオレシーバー」とか用途が限られているのだと
Wiiリモコンが読み取れない場合があるので、なるべく色んな機器に対応しているやつがいいと思います。 

価格.comとかで検索したらもっと安いのがあるかもしれないです。

そして、これを買ったら、Bluetoothを使うためのソフトをインストールします。
ダウンロードするURLは、買ったアダプタの説明書に書かれていると思います。

もし上記とおなじ型番なら
http://www.elecom.co.jp/support/download/network/bluetooth/lbt-uan05c2/
ここからダウンロードできます。


ダウンロードしたらzipファイルを解凍して、インストールしましょう。
ダウンロード・インストールのしかたがわからないひとは、おうちの人にききましょう。

 
つぎは、BluetoothとWiiリモコンを通信させていきます。
 
↓↓続きを読む↓↓ をご覧ください 
 

BluetoothとWiiリモコンを通信させる

つぎに、インストールしたソフト(うちの場合はBlueSoleil)を起動して Wiiリモコンと通信しましょう。
WS0037

BluetoothのアダプタをUSBの穴にさしてください。
そしてWiiリモコンを用意して下さい。電池もちゃんといれてくださいね。
Wiiリモコンは、新しい「Wiiモーションプラス」よりも、
旧Wiiリモコン のほうがちゃんと通信できる。というようなネット上の情報がありましたので
できたら旧Wiiリモコンをご用意ください。
 
ここからさきは「BlueSoleil」のソフトの説明なので
ちがうソフトを使っている人はあんまり参考にならないと思います。

まず、まんなかのオレンジの丸をみぎクリックして
「Bluetoothをオンにする」をクリックします。
WS0038
 
Bluetoothデバイスがオンになったら
もういちど、まんなかの丸いオレンジをみぎクリックして
「デバイスの検索」をクリックします。
WS0039

デバイスの検索をクリックしたら、すぐに
「Wiiリモコンの①と②キーを同時押し」します
★なんか反応悪いなーとおもったら、Wiiリモコンのうらがわにある
(旧Wiiリモコンの場合は、電池カバーをあけたところにある)
赤いボタンを押してみて下さい。

検索しているときに、この通信をしておかないと
パソコンがWiiリモコンを見つけてくれません。

WS0040

しばらくすると、「デバイスが見つかりました」というメッセージと
ゲームのコントローラのようなアイコンがあらわれます。

さらに、もうすこし待つと・・・
WS0041

デバイス名が「Nintendo RVL-CNT-01」という名前になります。


つぎに、「Nintendo RVL-CNT-01」のアイコンをみぎクリックして
「接続 Bluetoothヒューマンインターフェイスデバイス」
というメニューをクリックします。
クリックしたらまたWiiリモコンの①+②をおすか、赤いボタンを押してください。
WS0042

なんかたまに、この「接続」のメニューが出てこない時があるんですが
そのときは「サービスの検索」というメニューをクリックして
もういちどWiiリモコンと通信(①+②か赤いボタンをおす)してみてください。


WS0043

接続中はこんなウィンドウがでます。
Wiiリモコンのほうも、ランプがチカチカしています。


そして、中央のまるいオレンジと、Nintendo RVL-CNT-01のアイコンが
てんせんでつながれたら、接続完了です。
WS0044
 


GlovePIEをつかうには

さて、Wiiリモコンの信号をPCでキャッチできるようになったので
この信号をきちんと使えるようにしていきましょう。

色々ソフトは出ていますが、今回は汎用性の高さから
GlovePIEをつかってみましょう。

まずGlovePIE公式ページから、GlovePIEをダウンロードしましょう

GlovePIEのトップページ
http://glovepie.org/

ダウンロードのアドレスはこちら
http://glovepie.org/lpghjkwer.php 

ダウンロードページの
「Click here to Download GlovePIE 0.45 Free」というリンクをクリックします。
WS0045


「GlovePIE045Free.zip」というファイルがダウンロードされますので
わかりやすい場所に解凍しましょう。

解凍すると、なかに
「PIEFree.exe」というファイルがありますので、これをひらきます。
WS0046


すると、こんな画面がひらきます。
この// Type your script here とかかれている部分に
スクリプトを書いていくわけです。
WS0047

たとえば、Wiiリモコンの上下左右キーを、キーボードのテンキーに割り当てたい時は

Key.NUMPAD4 = Wiimote1.Up
Key.NUMPAD8 = Wiimote1.Right
Key.NUMPAD6 = Wiimote1.Down
Key.NUMPAD2 = Wiimote1.Left

こんなかんじにかきます。

テンキーがNUMPADで、テンキーの4をWiiリモコンのUP(うえ)ボタンにわりあてる…
というかんじです。

ただ今回は、Wiiリモコンの傾きなんかも取りたいので
初めてで、いちからスクリプトを書くのはハードルが高いですね。

すでにスクリプトを組んでくれている先人がいますので
そのひとのスクリプトをつかってみましょう。

J0nas1さんがつくったスクリプトはこちら
http://pastebin.com/T5NiKWGt

  1. //J0nas1's Scratch Wiimote connection script:
  2.  
  3. if clicked(space)
  4. if var.var
  5. var.var = false
  6. else
  7. var.var = true
  8. key.AnyKey = false
  9. endif
  10. endif
  11.  
  12.  
  13. if not var.var
  14. debug = "No remote connected"
  15. else
  16. if wiimote1.Exists
  17. var.Batt = wiimote.Battery / 48
  18. debug = "Battery: " + 100*48*var.Batt/192 + "% (Script is stopped)"
  19. else
  20. debug = "Script is stopped"
  21. endif
  22. endif
  23.  
  24. if wiimote1.Exists and not var.var
  25.  
  26. var.Batt = wiimote.Battery / 48
  27. debug = "Battery: " + 100*48*var.Batt/192 + "%"
  28.  
  29. //gx
  30. if wiimote1.gx < 0
  31. one = true
  32. else
  33. one = false
  34. endif
  35.  
  36. if (wiimote1.gx > 0.55) or (wiimote1.gx < -0.55)
  37. two = true
  38. else
  39. two = false
  40. endif
  41.  
  42. if (wiimote1.gx < -0.04 and wiimote1.gx > -0.15) or (wiimote1.gx > 0.04 and wiimote1.gx < 0.15) or (wiimote1.gx < -0.54 and wiimote1.gx > -0.65) or (wiimote1.gx > 0.54 and wiimote1.gx < 0.65)
  43. three = true
  44. else
  45. three = false
  46. endif
  47.  
  48. if (wiimote1.gx < -0.14 and wiimote1.gx > -0.25) or (wiimote1.gx > 0.14 and wiimote1.gx < 0.25) or (wiimote1.gx < -0.64 and wiimote1.gx > -0.75) or (wiimote1.gx > 0.64 and wiimote1.gx < 0.75)
  49. four = true
  50. else
  51. four = false
  52. endif
  53.  
  54. if (wiimote1.gx < -0.24 and wiimote1.gx > -0.35) or (wiimote1.gx > 0.24 and wiimote1.gx < 0.35) or (wiimote1.gx < -0.74 and wiimote1.gx > -0.85) or (wiimote1.gx > 0.74 and wiimote1.gx < 0.85)
  55. five = true
  56. else
  57. five = false
  58. endif
  59.  
  60. if (wiimote1.gx < -0.34 and wiimote1.gx > -0.45) or (wiimote1.gx > 0.34 and wiimote1.gx < 0.45) or (wiimote1.gx < -0.84 and wiimote1.gx > -0.95) or (wiimote1.gx > 0.84 and wiimote1.gx < 0.95)
  61. six = true
  62. else
  63. six = false
  64. endif
  65.  
  66. if (wiimote1.gx < -0.44 and wiimote1.gx > -0.55) or (wiimote1.gx > 0.44 and wiimote1.gx < 0.55) or (wiimote1.gx < -0.94) or (wiimote1.gx > 0.94)
  67. seven = true
  68. else
  69. seven = false
  70. endif
  71.  
  72. //gy
  73. if wiimote1.gy < 0
  74. eight = true
  75. else
  76. eight = false
  77. endif
  78.  
  79. if (wiimote1.gy > 0.55) or (wiimote1.gy < -0.55)
  80. nine = true
  81. else
  82. nine = false
  83. endif
  84.  
  85. if (wiimote1.gy < -0.04 and wiimote1.gy > -0.15) or (wiimote1.gy > 0.04 and wiimote1.gy < 0.15) or (wiimote1.gy < -0.54 and wiimote1.gy > -0.65) or (wiimote1.gy > 0.54 and wiimote1.gy < 0.65)
  86. zero = true
  87. else
  88. zero = false
  89. endif
  90.  
  91. if (wiimote1.gy < -0.14 and wiimote1.gy > -0.25) or (wiimote1.gy > 0.14 and wiimote1.gy < 0.25) or (wiimote1.gy < -0.64 and wiimote1.gy > -0.75) or (wiimote1.gy > 0.64 and wiimote1.gy < 0.75)
  92. q = true
  93. else
  94. q = false
  95. endif
  96.  
  97. if (wiimote1.gy < -0.24 and wiimote1.gy > -0.35) or (wiimote1.gy > 0.24 and wiimote1.gy < 0.35) or (wiimote1.gy < -0.74 and wiimote1.gy > -0.85) or (wiimote1.gy > 0.74 and wiimote1.gy < 0.85)
  98. w = true
  99. else
  100. w = false
  101. endif
  102.  
  103. if (wiimote1.gy < -0.34 and wiimote1.gy > -0.45) or (wiimote1.gy > 0.34 and wiimote1.gy < 0.45) or (wiimote1.gy < -0.84 and wiimote1.gy > -0.95) or (wiimote1.gy > 0.84 and wiimote1.gy < 0.95)
  104. e = true
  105. else
  106. e = false
  107. endif
  108.  
  109. if (wiimote1.gy < -0.44 and wiimote1.gy > -0.55) or (wiimote1.gy > 0.44 and wiimote1.gy < 0.55) or (wiimote1.gy < -0.94) or (wiimote1.gy > 0.94)
  110. r = true
  111. else
  112. r = false
  113. endif
  114.  
  115.  
  116. //gz
  117. if wiimote1.gz < 0
  118. t = true
  119. else
  120. t = false
  121. endif
  122.  
  123. if (wiimote1.gz > 0.55) or (wiimote1.gz < -0.55)
  124. y = true
  125. else
  126. y = false
  127. endif
  128.  
  129. if (wiimote1.gz < -0.04 and wiimote1.gz > -0.15) or (wiimote1.gz > 0.04 and wiimote1.gz < 0.15) or (wiimote1.gz < -0.54 and wiimote1.gz > -0.65) or (wiimote1.gz > 0.54 and wiimote1.gz < 0.65)
  130. u = true
  131. else
  132. u = false
  133. endif
  134.  
  135. if (wiimote1.gz < -0.14 and wiimote1.gz > -0.25) or (wiimote1.gz > 0.14 and wiimote1.gz < 0.25) or (wiimote1.gz < -0.64 and wiimote1.gz > -0.75) or (wiimote1.gz > 0.64 and wiimote1.gz < 0.75)
  136. i = true
  137. else
  138. i = false
  139. endif
  140.  
  141. if (wiimote1.gz < -0.24 and wiimote1.gz > -0.35) or (wiimote1.gz > 0.24 and wiimote1.gz < 0.35) or (wiimote1.gz < -0.74 and wiimote1.gz > -0.85) or (wiimote1.gz > 0.74 and wiimote1.gz < 0.85)
  142. o = true
  143. else
  144. o = false
  145. endif
  146.  
  147. if (wiimote1.gz < -0.34 and wiimote1.gz > -0.45) or (wiimote1.gz > 0.34 and wiimote1.gz < 0.45) or (wiimote1.gz < -0.84 and wiimote1.gz > -0.95) or (wiimote1.gz > 0.84 and wiimote1.gz < 0.95)
  148. p = true
  149. else
  150. p = false
  151. endif
  152.  
  153. if (wiimote1.gz < -0.44 and wiimote1.gz > -0.55) or (wiimote1.gz > 0.44 and wiimote1.gz < 0.55) or (wiimote1.gz < -0.94) or (wiimote1.gz > 0.94)
  154. a = true
  155. else
  156. a = false
  157. endif
  158.  
  159. //buttons:
  160. s = wiimote1.One
  161. d = wiimote1.Two
  162. f = wiimote1.A
  163. g = wiimote1.B
  164. h = wiimote1.Down
  165. j = wiimote1.Home
  166. k = wiimote1.Left
  167. l = wiimote1.Minus
  168. z = wiimote1.Plus
  169. x = wiimote1.Right
  170. c = wiimote1.Up
  171.  
  172. //Shakiness:
  173. v = wiimote1.Shakiness > 1 and wiimote1.Shakiness < 10
  174. b = wiimote1.Shakiness > 10 and wiimote1.Shakiness < 20
  175. n = wiimote1.Shakiness > 20 and wiimote1.Shakiness < 50
  176. m = wiimote1.Shakiness > 50
  177. endif

このJ0nas1さんがつくったスクリプトを、GlovePIEのスクリプトエリアに貼り付けます。
これでGlovePIEがわの準備は完了です。

コピペしたスクリプトは「File(ファイル)」の「Save(保存)」から保存することができます。
なんども使うスクリプトになりますので、保存しておくと良いと思います。

つぎにScratchでの動作を確認するためのプロジェクトをみてみましょう。
https://scratch.mit.edu/projects/93300177/
WS0048
元プロジェクトはJ0nas1さんがつくったものです。
日本語の説明をのせたかったのでリミックスしました。

プロジェクトをひらいたら、GlovePIEの「Run(実行)」のスイッチを押します。
WS0049
そのあと、Scratchのプロジェクトもマークをおして
スタートしましょう。


ステージにある、Wiiリモコンのシルエットが動くのが
確認できたでしょうか?
WS0050

ryは左右のかたむき
rzがひねり
rxが上下のかたむき
shakinessで、コントローラをふっているかどうか
をかくにんできます。

そのほか、Wiiリモコンにあるボタンが各変数に表示されています。

これでWiiリモコンとScratchを連動することができました。
このプロジェクトをリミックスすれば、Wiiリモコンをつかったゲームを
つくることができますね。

はじめは、Wiiリモコンのボタンをつかってキャラを動かすなど
かんたんな操作から作ってみると良いと思います。


太鼓の達人のタタコンをつかう

ヌンチャクやクラッシックコントローラなども、つなげて操作することができますが
太鼓の達人のタタコンもつかうことができます。

まずは、 タタコンをつながずにWiiリモコンをPCに接続します。
(タタコンをつないだまま接続するとうまくいかないことがあったので)
接続できたら、タタコンをつないで、GlovePIEを起動しましょう。

GlovePIEのタタコンのスクリプトは、このコメント欄のURLからダウンロードできます。
http://alter7.blog40.fc2.com/?mode=edit&rno=10321

(これがスクリプトのDLアドレスです。
http://www1.axfc.net/uploader/He/so/310535.dat

debug  = wiimote.InByteString + Wiimote.Expansion
var.drum_nohit = wiimote1.inByte18=0xFF
var.drum_right_middle = wiimote1.inByte18=0xEF
var.drum_left_middle = wiimote1.inByte18=0xBF
var.drum_right_up = wiimote1.inByte18=0xF7
var.drum_left_up = wiimote1.inByte18=0x9F
var.drum_left_middle_right_up=wiimote1.inbyte18=0xb7
var.drum_right_middle_left_up=wiimote1.inbyte18=0x8f
var.drum_right_middle_drum_right_up=wiimote1.inbyte18=0xe7
var.drum_left_middle_drum_left_up=wiimote1.inbyte18=0x5f

var.drum_up = wiimote1.inbyte18=0x97
var.drum_middle = wiimote1.inbyte18=0xaf
key.k=var.drum_right_up
key.f=var.drum_right_middle
key.j=var.drum_left_middle
key.d=var.drum_left_up
key.j=var.drum_middle
key.f=var.drum_middle
key.k=var.drum_up
key.d=var.drum_up
key.j=var.drum_left_middle_right_up
key.d=var.drum_right_middle_left_up
key.k=var.drum_left_middle_right_up
key.f=var.drum_right_middle_left_up
key.k=var.drum_right_middle_drum_right_up
key.f=var.drum_right_middle_drum_right_up
key.d=var.drum_left_middle_drum_left_up
key.j=var.drum_left_middle_drum_left_up
 

このスクリプトをGlovePIEのスクリプトエリアにはりつけます。

タタコンをテストする用のScratchプロジェクトも用意したので開いてみて下さい。
https://scratch.mit.edu/projects/93317165/
WS0051


そして、GlovePIEの「Run」をおして実行してみましょう。
Scratchのほうもをおしてスタートさせます。

タタコンをたたくと、変数の値が1にかわります。
一瞬のことでよく見えないので、ネコに「ドン」とか「カッ」とか言わせてみました。
右ドンのときは右向き、左ドンの時は左向きになります。

単純な連打ゲームでも、タタコンをつかうと盛り上がりそうですね!

さて、 今回は右ドン左ドン右カッ左カッの4種類しかつかいませんでしたが
同時押しなんかも取れるみたいです。

drum_right_middle(右ドン)
drum_left_middle(左ドン)

drum_middle(両方ドン)
drum_up(両方カッ)

drum_right_up(右カッ)
drum_left_up(左カッ)

drum_left_middle_right_up(左ドン右カッ)
drum_right_middle_left_up(右ドン左カッ)

drum_right_middle_drum_right_up(右ドン右カッ)
drum_left_middle_drum_left_up(左ドン左カッ)

こんなかんじですね。
今は同時押しも同じキーになるように設定されていますが
キーを変更したいときは、たとえば

key.j=var.drum_left_middle

この「 Key.j 」のjの部分をちがうキーに変えれば、そのキーにわりあてられます。

おわりに -GlovePIEがめんどくさい人はこちら-

どうでしたか?Wiiリモコンがちゃんとつながったでしょうか?

個人的には、Wiiリモコン本体よりも、クラッシックコントローラや、タタコンのほうが
初心者には断然使いやすそう!と思いました。

GlovePIEがめんどくさい!!!と思った方はこんなソフトもあります。
Wey
http://www.geocities.jp/takomiku39hp/wiimote.html


これはソフト上でキー割り当てをしてくれるので、スクリプトもいらず、超カンタンです。
傾きにこだわらなければこちらの方が直感的に使いやすいと思います。
ヌンチャクやクラッシックコントローラにも対応しています。

GlovePIEとWeyを同時に使うことはできません。

今回は記事がかなりの量になってしまいました。
やっぱりこういうときは動画のほうがいいのかなって思いますね。

わかりづらい部分がありましたら、コメントへどうぞ。