
2025-10-24 更新
インタラクティブゲームにおいて、測域センサーとボールを用いたコンテンツは定番の一つとなっています。今回、新たな要素の追加に挑戦しました。
「ボールの“着弾位置”だけでなく、“大きさ”まで識別できたら? ゲーム体験はどう変化するだろうか」
本プロジェクトは、測域センサーによるリアルタイム・ボールサイズ識別の実装と、オープンソースのゲームエンジン「Godot」のポテンシャルを探ることを目的としています。
プロジェクトの核心は、直径が約6cm異なる2種類のボール(小:約6cm、大:約12cm)を、リアルタイムで正確に識別すること。
測域センサーは通常、検知した「点の集合(クラスター)」として物体を捉えます。このクラスターを利用し、両端2点間距離を余弦定理を用いて算出するアルゴリズムを構築しました。

1: センサーが点の集合(クラスター)を検知
2: クラスターの両端点を特定
3: 2点間の距離を算出し、ボールサイズを特定
検証の結果、厳しく見積もって約4cmの差(誤差±2cm)まではほぼ100%安定して識別可能という手応えを得ています。
技術基盤の上に乗せるのは、「圧倒的な爽快感」です。 選んだ敵キャラクターは暖冬で世間を騒がせている「カメムシ」。画面を埋め尽くすほどの“群れ”が襲いかかります。

敵キャラクター同士の物理的な当たり判定をあえてつくらないことで、視覚的に圧倒的な物量感を演出。さらに、一体一体がランダムな挙動を織り交ぜることで、単調な「塊」ではなく、生命感あふれるリアルな"群れ"の動きを生み出しました。
そして、ボールサイズ識別技術が、このゲームデザインに戦略的な深みを与えます。

小さいボール: 投射され、着弾点で敵を吹き飛ばす、シャープでスピーディな攻撃。
大きいボール: 投射後、広範囲に持続的なダメージエリアを形成し、エリア内の敵を継続的に削っていく攻撃。
この使い分けにより、プレイヤーは状況に応じた判断を迫られます。また大きいボールの数を調整することで、一人でもカメムシの物量に対応でき、複数人でも簡単すぎない、プレイ人数でゲーム体験を損なわない調整弁としての機能も果たしてくれます。
敵を撃破した際の挙動にもこだわりました。HPが尽きた瞬間にただ消すのではなく、攻撃の衝撃で後方へ弾き飛ばす「ノックバック処理」ののち消しています。 高密度な群れが一斉に弾け飛ぶ視覚効果は、圧倒的な物量感と相乗し、強烈な爽快感があります。
「敵を倒す」動機付けには、「何かを守る」という文脈が不可欠です。 本作では防衛対象を「リンゴ」に設定。そのステータスをHPバーではなく、ビジュアルの変化で直感的に伝えました。

1: 時間経過でつぼみからりんごの花、そして果実へと育っていきます。
2: 敵の攻撃を受けると、どんどんかじられてしまった痛々しい姿へと変貌してしまいます。
3: HPがなくなると、枝から落果してしまいます。
「リンゴを育てたい・守りたい」というポジティブな動機が、プレイ体験に一層の熱を帯びさせます。
「大量の敵」と「派手なエフェクト」の両立。これを安定したフレームレートで実現するために、個々の敵の思考ロジックからオブジェクト管理、範囲攻撃の処理に至るまで、アーキテクチャレベルで多角的な軽量化設計を行いました。
・敵の状態をシンプルなステートマシンで管理し、不要な計算をフレーム単位で省略。
・Godotの物理エンジンが提供する空間クエリを活用し、最も近いターゲットを極めて高速に検索可能に。
これにより、カメムシの大群をノックバックさせる物理挙動と、広範囲エフェクトが重なっても、描画落ちしない快適なレスポンスを確保しています。
「ボールの大きさで、新しい遊びは作れるのか?」 この問いから始まった挑戦で、ついつい夢中になるゲーム体験が出来上がりました。
次のステップアップがあれば「ボールの色の識別」でしょうか?赤なら炎、青なら氷の攻撃……。
ボールを用いたインタラクティブゲームという定番の組み合わせでも、拡張の余地が無限に秘められており、この分野のポテンシャルを再確認するプロジェクトとなりました。