ソフトウェアエンジニア T.Y.
2026.6.22
Femto Bolt を使用してバッティングセンターのような体験ができるデモアプリについての記事第2弾となります。
前回は打席に立ち、バッティングの構えをし、バットのスイングを可視化するところまでを行いました。位置検出とポーズ検出を組み合わせてバッティングを行うことはできるようになりましたが、まだ何かが足りません。
そう、ボールがまだないのです!
ピッチャーに見立てたオブジェクトの方向からバッターのいる方向に向かってボールを移動させ、バッターの近くでスイングしたら "当たった" ことにするようにしてみました。
ただ、野球をやったことのある人は分かると思いますが、バットでボールを打つというのは簡単なことではありません。
ボールとバットが接触するよう位置調整、特に "高さ" の調整が必要です。さらにタイミングが合っていなければそもそもボールとバットの接触が発生しません。
このあたりは思い切り簡略化しないとゲームとして成立しない要素ですので、タイミングさえ合っていれば当たったことにするという判断をしました。リアル方向に寄せると野球ゲームではなく "空振りゲーム" になってしまいますからね。
打ったかどうかの判定は、"ボールがバッター近くにいる時間帯にスイングがあったかどうか" で判断させています。もはやバットではなくテニスのラケットやお祭の特大うちわを使っているような感じになっていますが、ゲームの楽しさを優先させるのであれば仕方のない部分かなぁと感じています。
このような調整を行いましたが、タイミングを合わせることも意外と難しいです。まず単純にボールが小さいので、どこまで近づいているのかが分かりにくい。気がつけばバットを振るタイミングを逃していた、ということが続きました。
また、小さいボールが自分の近くにやってくるまでの時間がそれほどない、つまり "速い" というのもやってみて分かったことです。それへの対処法は簡単で、ボールのスピードを遅くするだけです。
慌てずに対応できるスピードであれば簡単にタイミングを合わせることができるようになりました。
ここまでは技術検証のため、ピッチャーやバッターなどは単純な形状でアニメーションもしていません。しかしピッチャーが投げるモーションをとるようになったら、タイミングをとることも難しくなくなるかもしれません。
さらに、ボールを打ったらどこまで飛んだのか見届けたいと思うのが人情です。多くの野球ゲームは打ったら画面が切り替わったりして打球の行方に焦点が当たります。
今後はよりゲームらしくなるよう、開発を続けていきたいと思っています。
関連する記事
この人が書いた記事