Bluetoothモジュールと各種センサーを搭載した米Silicon Laboratories社(以下、Silicon Labs社)の「Thuderboard React Derby ミニチュア・カー・キット キット」を試用するシリーズの第3回目。前回は同梱のミニチュアカー(ダービーカー)を使ってお腹いっぱい楽しんだという新里 祐教氏(GMOインターネット 特命担当技術分析官)。今回は評価ボードを活用した応用を試みる。目を付けたのは、ボタンと物理エンジンだ。

 今回は評価ボードである「Thunderboard React」(端末)を使ってスマホアプリを作ってみる。実は、ここでモーレツに悩むことになった。前回紹介した、同梱のダービーカーという実際のモノとの連携が面白過ぎて、Thunderboard Reactを使った面白いアプリがさっぱり思いつかないのだ。とりあえずの案として、次のようなものを考えた。

・テーブルの下に端末を隠しておき、磁石を底に付けた食器がテーブルの上に置かれたら「食器がテーブルの上に置かれた」ことをホールセンサーで検知、LEDを光らせたりスマホに通知する
・ドア枠に端末、ドア本体に磁石を設置して、ホールセンサーを利用してドアの開閉検知をする
・端末に実装されているボタンをBluetoothリモコンとして利用する

 温湿度センサーや加速度/ジャイロセンサーを使ったアプリはこれまでに色々と作ってきたこともあり、あまり使っていないホールセンサーの利用を考えた。しかし、よくある位置検知や開閉検知といったものしか思い浮かばない。そこで、端末に搭載されているボタンとLEDに着目して、このボタンを押したことがトリガーになるシンプルなゲームを作ることにした。

Thunderboard Reactを利用したシンプルなゲームアプリ
評価基板上のボタンを利用するスマホゲームアプリを作成する。ボタン操作をトリガーにラケットが移動する、いわゆる「ピンポン」ゲームだ。

 作るゲームは、いわゆる「ピンポン」である。ラケットを移動させて、画面上から落ちてくるボールを打ち返すというものだ。今回はAndroidアプリを作成することにする。

 ラケットは画面下で左右に移動するもので、操作にThunderboard Reactの2個のボタンを利用する。ボールの投入は、ボタンの同時押しで行うことにした。ボード上の青、緑のLEDはボールを打ち返した瞬間と落とした瞬間に光らせる。単にボールを打ち返すだけでは面白くないため、画面上に障害物となる青いボックスを用意して、ボールが跳ね返ることで色々な方向に動くようにする。また、ボールには下向きに重力加速度(9.81m/s2)を与えている。

Thunderboad Reactをスマホゲームのコントローラーとして利用する
Thunderboad Reactをスマホゲームのコントローラーとして利用する
Thunderboard Reactの2個のボタンとLEDを、スマホ上のゲームアプリと連携させる。ラケット(右スマホ画面の下の赤い線)の左右の移動操作にボタンを利用する。ボールの投入は2個ボタンの同時押し。ラケットでボールを跳ね返した時は青色LEDが、ボールを落とした時は緑色のLEDが点灯するようにした。
[画像のクリックで拡大表示]

 至ってシンプルな構成だが、いわゆるゲームアプリの基本動作になる。物体間の衝突判定、質量、加速度、初速、物体の摩擦、反発係数、物の形状といった物理的な演算を行うため、ここでは物理エンジンとして「JBox2D」を利用した。

物理エンジンとは
物理エンジンとは
物理エンジンとは、よくゲームで利用される。ゲーム内(ゲーム空間/仮想空間)の物体の物理的な挙動に関する演算を行うエンジン(ライブラリ)のこと。ここで利用した「Box2D」の他に、「Unity」や「Unreal Engine」といったゲーム開発環境には、ほぼ必ず含まれている。ゲームの他に、シュミレーションや機械学習といった、現実世界での実施が難しいケースでも利用されている。
[画像のクリックで拡大表示]