バナナラボ

Vtuber美作ワニのブログです

【Unity】ボタン連打の実装について考える記事【Vtuberでもゲームが作りたい Part.8】

バナナラボの美作です。 今日はVtuberでもゲームが作りたい Part.8の冒頭でやっていたことのお話になります。 youtu.be

問題

ボタン連打時のショットの間隔が微妙だったのでこれの原因がなんでかを調べていました。 結論はボタン連打時の1回目と2回目の間隔が60fps時だと6フレーム空いてしまうのが原因でした。

この原因確認に25分ほどの時間を費やしてしまった挙げ句、結果解決にも至ってないので悩ましいことになってしまいました。 理想は1発目と2発目の間の間隔を3フレーム前後にするではあるのですが、Unityの仕組み上それは難しそうでした。

難しい理由

UnityのInputシステムはDownStayUp で切り替わっていくようになっている(と思います)。それぞれがどうしても1フレームの間隔が空いてしまうという問題があります。

ここだけで見れば4フレーム目でいけるように見えるのですが、60fpsである場合は0.0333...秒以内に連打しないといけないという状態になります。この連打はもはやTAS先生の領域です。

設計の見直し

ファミコンのゲームのように連打を許容する仕組みではなく、ボタンを押しっぱなしにしていれば一定間隔で攻撃できる、という仕組みにしていく必要があるなと考えています。 そうすることで今起きている問題の解決はできますし、ゲーム難易度は落ちてしまいますがゲームとして成立させる方を優先するのが大切なのでそちらをどうにかしていくスタンスでいきます。

他にいい方法があれば考えてみようかなと思います。

アプローチ案

  1. 物理レイヤーを利用し、移動・ショットの計算方法を変更する。 ただし、連打ショットに対する解決には至っていないのでこの方法は微妙

  2. ショット自体の連打間隔は正しいものであると考え、移動の幅に問題がある前提で実装を見直す方法。 これだと連打自体は正しく、変な間隔でショットが出て敵を狙いにくいという問題を解決することができる

  3. 現時点では怪しいスケール間を見直す サイズなどいろいろおかしいのでちゃんとした画角に合わせて実装し直すという方法

どれを採用するかは今後のお楽しみということで!

宣伝

YouTubeでゲーム実況・ゲーム開発の動画投稿および配信をやっています! もしご興味があればチャンネル登録・高評価よろしくおねがいします!

www.youtube.com