そろばんがコントローラー
この前、ニンテンドーラボVRキットで、そろばんがコントローラーのゲームを作ってみました。
その時の話はこちらです↓
思っていたよりそろばんの値がいい感じに入力できました。
SwitchのJoy-Conがあれば、この世の中のいろいろなものをコントローラーにできるような気がします。
そもそも、ニンテンドーラボはダンボールがコントローラーになるというとんでもないゲーム(?)ですものね。
というわけで、そろばんToy-Conの仕組みについてもうちょっと書いておきたいと思います。
動画があります
動きがある方がわかりやすいので動画にしてみました。
よろしければどうぞ!
もうちょい詳しく
動画では細かいところが説明しきれなかったので、以下に補足します。
算盤(そろばん)について
まず、前提になりますが、そろばんは縦1列で数字1桁を表します。
横に伸びる白いラインに、下の珠(たま)が1つくっつくごとに”1″、上の珠が1つくっつくごとに”5″となり、その合計で表します。
白いラインにところどころ黒い点がついているので、そのうちのどこかを一の位として使います。
そしてうまいことパチパチと珠をはじいていくと、いろんな計算ができちゃうというステキグッズなのです。
で、今回のToy-Conでは、一の位と千の位の下に細長い反射テープを貼りました。
この状態でそろばんの上に設置したJoy-Con(R)のIRカメラを使うと、珠が無いところが反射するので、それをスポイトでキャッチするという形にしました。
最初は「珠」、あるいは「珠の軸」に反射塗料を塗ろうかと思ったのですけど、塗料を準備するのが大変そうだったのでこのスタイルになりました。
というか、すべての珠に反射塗料を塗ったらものすごいギラギラのそろばんになってしまい、計算どころじゃなくなってしまうと思います。
……ちょっと見てみたい気もしますが。
ちなみに今「ギラギラのそろばん」って言っておいて何だろうと思いましたが、世の中には(実用性は別にして)いろいろなそろばんがあるっぽいのでどこかには存在しているかもしれません。
↓透明なものとかありました。
……話を戻しまして、このように準備したそろばんをIRカメラで読み取ろうとすると、不要な光の反射や、反射テープが自分の手で隠れてしまうと正しく読み取れない場合があります。
これを回避するためにはIRカメラの位置の調整が必要です。
また、動画には出てこないですが、足し算後に珠が正解の状態になっているかどうかを判定する際、一定時間(0.2とか0.3秒くらい)正解の状態を読み取れ続けたらOKというようにしています。
(「普段は0リセットがかかりっぱなしだけど、正解の数字とそろばんの珠の状態が合っている間だけ数字が上がり続けるカウンター」を用意して、それが一定の数字以上になったら正解と判定)
これは、手の配置とかで偶然正解になっちゃうと勝手に次の問題が出てきてわけわからなくなりますので、それを避ける目的です。
御破算Attack
今回のゲームでは、そろばんを0にリセットする動作を「御破算(ごはさん)Attack」と称して、箱を壊す操作としました。
そろばんの読み上げ算で、最初に「御破算で願いましては」みたいなセリフでシャーッとリセットするアレです。
今回は、
- そろばんを傾ける(Joy-Con(L)の傾きで判定)
- そろばんを戻す(Joy-Con(L)の傾きで判定)
- 全て”5″になった珠を”0″に戻す(反射テープで判定)
という3つのステップの動作があったらAttack!という感じにしました。
プログラムはこんな感じです。
上に、今がどのステップかを持つカウンターを置いて、その下にはステップごとに左側のノードのかたまり→中央のノードのかたまり→右側のノードのかたまりのように判定していっているような感じです。
動画中でも書いていますが、右側のノードのかたまりは、珠が”0″になったかどうかを判定するものなのでもうちょっとわかりやすいプログラムにできそうです。
方向を示す矢印
モノを出したり消したりするにはモノをワープさせるノードも使えるのですけど、私は見えない場所から見える場所にモノを移動するということをやりがちです。
何故かというと使えるワープの数が結構限られていますし、こっちの方がちょっと動きがイメージしやすいからです。(個人的には)
ヒトの動かし方
動画中では今回は「ロボット」ということにしていますが、主人公のキャラクターは「ヒト」を使っています。
その動かし方ですが、今回はプログラムで座標を計算してそれを画面のヒトに反映させるというスタイルです。
単純にJoy-Conのスティックの動きをヒトにつないでしまえば何の計算もいらないのがこのToy-Conガレージのうれしいところですが、さすがにそろばんと直結できる仕組みにはなっていないのでこうしています。
座標の計算といっても簡単で、単純に横と縦の位置を整数カウンターで持っているだけです。
で、ヒトは位置センサーを使って円柱(今回、これをマーカーと呼びます)の場所に向かって動くようにしておいて、マーカーはさっきの整数カウンターの座標の位置に動かすということにしました。
(マーカーは非表示にして隠しておく)
これで人が移動している間にさらに移動の入力があったとしても、自然な動きでヒトが動いてくれるかなと思いました。
しかし、今回はそんなに連続で移動できなかったのであまり意味なかったです。
向いていない
で、本当はそろばんをコントローラーにしたら、それはもうキーボードのブラインドタッチのごとくパチパチパチパチと操作している感じになって超かっこいいのではないかと思ったのですけど、どうも操作者の技術の限界もあり、かっこよくなりませんでした。
でも慣れてきたらすごい早くなったりして。
まとめ
というわけで、なんとなくの思い付きでそろばんを使ってみましたがまだ可能性いろいろあるなと思いました。
さきほど、「キーボードのブラインドタッチ」と書きましたが、パソコンの各キーの向こう側の壁に反射テープ貼って、奥側の斜め上あたりからIRカメラで覗いたらキーの入力もある程度読めちゃうんじゃないかなと思いました。
(ちょっと作るの大変そうですが……)
IRカメラ以外もいろんなセンサーが入っていてJoy-Conは面白いので、また何かして遊べたらなと思います。
おわり。
コメント