Bluetoothモジュールと各種センサーを搭載した米Silicon Laboratories社(以下、Silicon Labs社)の「Thuderboard React Derby ミニチュア・カー・キット キット」を試用するシリーズの第3回目。前回は同梱のミニチュアカー(ダービーカー)を使ってお腹いっぱい楽しんだという新里 祐教氏(GMOインターネット 特命担当技術分析官)。今回は評価ボードを活用した応用を試みる。目を付けたのは、ボタンと物理エンジンだ。
今回は評価ボードである「Thunderboard React」(端末)を使ってスマホアプリを作ってみる。実は、ここでモーレツに悩むことになった。前回紹介した、同梱のダービーカーという実際のモノとの連携が面白過ぎて、Thunderboard Reactを使った面白いアプリがさっぱり思いつかないのだ。とりあえずの案として、次のようなものを考えた。
・テーブルの下に端末を隠しておき、磁石を底に付けた食器がテーブルの上に置かれたら「食器がテーブルの上に置かれた」ことをホールセンサーで検知、LEDを光らせたりスマホに通知する
・ドア枠に端末、ドア本体に磁石を設置して、ホールセンサーを利用してドアの開閉検知をする
・端末に実装されているボタンをBluetoothリモコンとして利用する
温湿度センサーや加速度/ジャイロセンサーを使ったアプリはこれまでに色々と作ってきたこともあり、あまり使っていないホールセンサーの利用を考えた。しかし、よくある位置検知や開閉検知といったものしか思い浮かばない。そこで、端末に搭載されているボタンとLEDに着目して、このボタンを押したことがトリガーになるシンプルなゲームを作ることにした。
作るゲームは、いわゆる「ピンポン」である。ラケットを移動させて、画面上から落ちてくるボールを打ち返すというものだ。今回はAndroidアプリを作成することにする。
ラケットは画面下で左右に移動するもので、操作にThunderboard Reactの2個のボタンを利用する。ボールの投入は、ボタンの同時押しで行うことにした。ボード上の青、緑のLEDはボールを打ち返した瞬間と落とした瞬間に光らせる。単にボールを打ち返すだけでは面白くないため、画面上に障害物となる青いボックスを用意して、ボールが跳ね返ることで色々な方向に動くようにする。また、ボールには下向きに重力加速度(9.81m/s2)を与えている。
至ってシンプルな構成だが、いわゆるゲームアプリの基本動作になる。物体間の衝突判定、質量、加速度、初速、物体の摩擦、反発係数、物の形状といった物理的な演算を行うため、ここでは物理エンジンとして「JBox2D」を利用した。