敵に攻撃を当てて、ダメージも入る。HPも減る。それなのに、なぜか「当たった気がしない」。数字は動いているのに手応えが軽い、という段階でつまずきます。
原因は1つの機能の不足ではありません。「当たった感じ」は、一瞬止める・画面を揺らす・相手を飛ばす・光らせる・音を鳴らすといった小さな演出を、同じ瞬間に重ねることで生まれます。この記事では、その中核になるヒットストップ・画面シェイク・ノックバックの作り方と、残りの演出を専用記事へ振り分けながら、重ね方と配分に集中して解説します。
この記事でわかること
- 手触りは 1つの機能でなく、複数の演出の重ね掛け で生まれる
- ヒットストップの要、 Global Time Dilation と Custom Time Dilation の違い
- 画面シェイク(Camera Shake)と ノックバック(Launch Character)
- 光・音・エフェクト・数字は 専用記事へ委譲 して組み合わせに集中する
- 実践: 当たった瞬間に「止める+揺らす+飛ばす」を重ねる
「当たった感じ」は演出の合成
まず前提を押さえます。手触りの良い攻撃は、 たった1つの機能で作られているわけではありません 。当たった瞬間に、いくつもの小さな演出が同時に起こっています。

代表的なのは次の演出です。
| 演出 | 役割 | この記事での扱い |
|---|---|---|
| ヒットストップ | 一瞬止めて食い込みを出す | 本記事で作る |
| 画面シェイク | 衝撃でカメラを揺らす | 本記事で作る |
| ノックバック | 相手を後ろへ弾く | 本記事で作る |
| 被弾フラッシュ | 相手を一瞬光らせる | 専用記事へ委譲 |
| ヒッ トエフェクト | 火花・斬撃線を出す | 専用記事へ委譲 |
| 効果音 | 打撃音を鳴らす | 専用記事へ委譲 |
| ダメージ数字 | 数値を飛び出させる | 専用記事へ委譲 |
大事なのは、これらを 同じ瞬間に、適量ずつ重ねる ことです。1つだけでは物足りず、全部を最大にすると画面が破綻します。そこで本記事では、中核の3つ(止める・揺らす・飛ばす)を自分で作り、残りは既存記事の道具を組み合わせる形にします。
なお、この記事は攻撃が当たったことを検知できている前提で進めます。ダメージを当てて相手のHPを減らす仕組みそのものは、体力とダメージの記事で扱っています。
ヒットストップ:2つのTime Dilation
ヒットストップは、攻撃が当たった ほんの数フレームだけ時間を止める 演出です。パンチや斬撃が「効いた」瞬間の食い込みは、ほとんどこれで作られています。
UEで時間の速さを変える方法は2つあり、 効く範囲が違います 。ここを取り違えるのが最初のつまずきです。

| 方法 | 何が遅くなるか | 使いどころ |
|---|---|---|
| Set Global Time Dilation | ワールド全体 | バレットタイム、全体スロー |
| Actor の Custom Time Dilation | そのActorだけ | 被弾した相手だけ止める |
Set Global Time Dilation は GameplayStatics のノードで、1.0 が通常、0.05 なら5%の速さ(スローモーション)です。ただし プレイヤーもエフェクトも、文字どおり全部 が遅くなります。
一方、Actorには Custom Time Dilation というプロパティがあり、Set Custom Time Dilation で個別に変えられます。あるActorの実際の時間の速さは Global × Custom で決まるので、Globalを 1.0 のままにして被弾した相手のCustomだけ 0.15 にすれば、 その相手だけが一瞬止まり、こちらは普通に動ける 状態になります。
タイマーの落とし穴
ここで、多くの人がはまる落とし穴があります。 タイマーやDelayは、Global Time Dilationの影響を受けます 。

たとえば「Globalを 0.05 にして、0.1秒 後に元へ戻す」とタイマーを組んだとします。ところがその 0.1秒 は 遅くなった世界の中での0.1秒 なので、実時間ではおよそ 2秒(0.1 ÷ 0.05)も止まり続けます。「一瞬止めたつもりが、いつまでも戻らない」の正体はこれです。
これを避ける確実なやり方が、 被弾ヒットストップには Custom Time Dilation を使う ことです。 タイマーはGlobal Time Dilationには従いますが、Actorの Custom Time Dilation には従いません 。Globalを 1.0 のまま相手のCustomだけ下げれば、復帰用のタイマーは実時間どおりに動き、素直に戻せます。
| やりたいこと | 使うもの | 復帰のさせ方 |
|---|---|---|
| 被弾した相手だけ一瞬止める | Custom Time Dilation | タイマーで実時間どおり戻る |
| 画面全体をスローにする(演出) | Global Time Dilation | 入力やイベントで戻す(短い固定タイマーは避ける) |
画面シェイク
画面シェイクは、衝撃でカメラを短く震わせる演出です。作り方は2ステップです。
- シェイクの中身を作る:
Blueprint Classを作り、親クラスに Legacy Camera Shake を選ぶ。CS_Hitと名付ける(詳細パネルに揺れの数 値が並ぶのはこちら。Camera Shake Baseを親にする場合は、後述のとおりRoot Shake Patternの設定が別途必要) - 鳴らす: 攻撃が当たった瞬間に
Start Camera Shakeを呼ぶ

Legacy Camera Shake を選ぶと、クラスの詳細パネルに揺れの設定(Oscillation Duration や Rot Oscillation)が並びます。まずは回転の揺れ(Rotation Oscillation)を軽く入れるのが扱いやすいです。
補足: 新しい
Camera Shake Baseを親にする場合は、詳細パネルに数値が直接並びません。Root Shake PatternにWave Oscillator(またはPerlin Noise)を割り当て、そのPattern側でAmplitude・Frequencyを設定します。手順が変わるので、まずは設定が素直な Legacy Camera Shake から始めるのがおすすめです。
| 項目 | 値の目安 | 意味 |
|---|---|---|
| Oscillation Duration | 0.15 | 揺れる長さ(秒) |
| Rotation Oscillation → Pitch → Amplitude | 1.0〜3.0 | 縦揺れの大きさ |
| Rotation Oscillation → Pitch → Frequency | 20〜40 |