前書き
アクションゲームにおいて攻撃が当たった瞬間に一瞬ゲームを止める「ヒットストップ」という機能は、爽快感を高めるうえで重要な演出です。ヒットストップを適切に活用することでプレイヤーに攻撃の手応えを感じさせたり、ゲームのテンポを調整することができます。
Unityではさまざまな方法でヒットストップを実装できますが、今回はアセット「FEEL」に含まれる「Feedbacks」システムを活用して簡単にヒットストップを設定する方法を解説していこうと思います。
そもそもヒットストップとは?
ヒットストップとは、攻撃や衝突時にゲームの進行を一時的に遅くすることでインパクトを強調する演出手法です。格闘ゲームやアクションゲームでは定番の技術であり、
- 攻撃の手応えを強調する
- ゲームプレイの視認性を向上させる
- 爽快感を演出する
といったメリットがあります。
参考にFeedbacksを使って攻撃の3回目にヒットストップを入れてみました。
攻撃の瞬間、画面が止まっていることが分かりますね。
Feedbacksを使ったヒットストップの設定手順
では早速、Feedbacksを使ったヒットストップを設定していきましょう。
Feedbacks(MMF Player)コンポーネントを追加する
Feedbacksを使うためにはFeedbacks(MMF Player)コンポーネントを追加したオブジェクトが必要になります。
今回のヒットストップは基本的に攻撃した時に実行されることを想定しているため武器にFeedbacksのオブジェクトを追加しましょう。
サンプルとしてTopDownEngineのDemoにあるKoalaSwordを使ってヒットストップを追加していこうと思います。KoalaSwordにはWeaponUsedMMFeedbackがすでに設定されているのでこのFeedbacksにヒットストップ機能を追加していきます。

TimeScaleModifierの設定を追加する
今回はKoalaSwordの3回目の攻撃にヒットストップを入れたいためWeaponUsedMMFeedback3のMMF Playerにヒットストップの設定を追加します。
すでに設定されているFeedbacksに対して Add new feedback から
Time -> Timescale Modifier を選択します。

その後。Timescale Modifierの
- Time Scale: 0.2(ゲームの時間を20%の速度にする)
- Time Scale Duration: 0.5(ヒットストップの持続時間)
に設定してみましょう。

上記の設定になると、武器の攻撃3回目が発動すると
0.5秒間、時間の進行が 20% になる
というヒットストップが発しします。
設定値を色々変えてみる
ヒットストップの強さは、Time Scale と Time Scale Duration を調整することで変更可能です。
例えば「Time Scale:0.1(sec)」、「Time Scale Duration:1.0(sec)」だと以下にようになります。
例えば「Time Scale:0.5(sec)」、「Time Scale Duration:0.1(sec)」だと以下にようになります。
重たい攻撃だったり、比較的軽めの武器だったりヒットストップを使うことでいろいろ表現ができると思いますのでその武器になった設定パラメータを見つけてみてください。
まとめ
今回は、Feedbacksでヒットストップを実装する方法ついて紹介しました。
- MMF Player を武器に追加し、Timescale Modifier を設定するだけで簡単に実装可能。
- Time Scale と Time Scale Duration を調整することで、武器ごとのヒットストップの強さを変更可能。
- ヒットストップに カメラシェイク や 画面フラッシュ を組み合わせると、より演出効果が高まる。
FEELのFeedbacksを使えば、スクリプトを書かなくてもヒットストップを手軽に調整できます。カメラシェイクやエフェクトと組み合わせてよりダイナミックな演出を作りましょう。
ぜひ、自分のゲームに取り入れて、アクションの爽快感をアップさせてみてください!
コメント