ソフトウェアエンジニア T.Y.
2026.7.31
前々回、前回と Femto Bolt を使ったバッティングゲームの制作過程を紹介してきました。
バットを振り、投げられたボールを打つところまでは実現できていますが、今回はこれをゲームらしくしていきます。
バットをうまくボールに当てることができて飛んでいったならば、どこまで飛んだかを確かめたいです。
昔からの野球ゲームは打った瞬間に画面が切り替わり、グラウンドを真上から捉えたアングルとなってボールを追いかけるように画面がスクロールしていきました。しかし今回は別のアプローチとして、画面切り替えを行わずに打球を追いかけるようにしました。
初期アングルはちょうどキャッチャーの後ろにいる審判の位置にカメラを配置し、ピッチャー方向に向けて撮影をしているような構図となっています。打球が飛ぶとカメラ位置は変わらず、カメラの中心にボールが映るようパンチルトを行います。しかしこれだと飛距離が伸びるほどボールが見えづらくなります。100メートル先にある7cm程度のボールなんてほぼ見えないですからね。
そこでボールが今どこにいるのかを表すため、ボール位置の少し上に「↓」を表示させるようにしました。この矢印は3D空間の奥行きに左右されず一定の大きさになるよう設定をしています。
ボールが着地し、飛距離が表示されたら1秒ほど停止したあとカメラアングルは元の状態に戻ってバッティング再開となります。
人間の目は2つ付いているが故に奥行きを感じることができます。
しかし3Dゲームというのは、計算上の空間内では3次元として扱われているもののディスプレイに表示されるときには2Dの絵となってしまいます。つまり、奥行きを感じづらくなってしまうのです。
このゲームはタイミングを合わせることが何よりも重要ですので、近づいてくるボールに対してバットを振るタイミングをどうやって取るのかがキモとなります。
そこで考えたのが、投げられたボールの外側にリングを描画し、バッターに近づくに連れてリングの半径が縮小、ボールと重なった地点が打撃ポイントとなるようにするというエフェクトでした。
バットは振り始めてから打撃ポイントに到達するまでには少しラグがあるため、リングがあと少しでボールに重なるという時に振り始めるとヒットする可能性が高くなります。このエフェクトを追加したおかげで打率がかなり上昇しました (笑)
だいぶゲームらしさが出てきたので、さらにゲームっぽさを加えていきます。
ゲームには”状態”があり、だいたい以下のような状態を持っています。
スタート画面
モード選択画面
ゲーム画面
リザルト画面
これらの状態切り替えはPCならキーボードやマウス、ゲームコンソールならボタンを押すことになります。しかし今使っているのはFemto Boltであり、人体のポーズ検出ができるのです。であればジェスチャーによって状態切り替えもできそうです!
いろいろ試してみた結果、頭上で両手を使って🙆のポーズを1秒キープしたら決定を選択したことになるようにしてみました。円形インジケーターを使い、キープできているとインジケーターが満たされていくような表示をすることで1秒キープがわかりやすくなったと思います。
さらに、投球スピードの違いによるモード選択も実装しました。
立ち位置により速球、ふつう、ゆっくりの各モードを選び、🙆キープで決定となります。
ここまでを実装した状態の動画です。
見た目はこれからの調整となりますが、ゲームらしさは増してきました。
引き続き開発を行っていきます。
関連する記事
この人が書いた記事