ゲームの手応えはどこから生まれるか:フラッシュ、振動、ダメージ表示、音効、パーティクル

:::geo-tldr
要点:
- 19 特徴フレームワーク:hit stop、sound coherence、camera control の 3 つが中核
- 振動パラメータ:0.08 秒 40Hz、音効 12ms 同期、誤差 15ms 未満で 22% 向上
- フラッシュ効果:50〜100ms、パーティクル 20〜30 個、寿命 0.5〜1 秒
- 五感連携:振動+音効同時 → フラッシュ(20ms)→ パーティクル(50ms)→ ダメージ表示(100ms)
- おすすめツール:Unity Feel プラグイン(130+ モジュール)、Cocos Creator Haptics API
:::
GameJam の残り 1 時間、手応えが弱くて打撃感が出ない——そんな経験、ありませんか?「操作がふわふわする」「反応が鈍い」というプレイヤーの声を聞いても、どこから直せばいいか分からない。正直、私も同じ壁にぶつかりました。
2012 年、Martin Jonasson と Petri Purho が GDC で「Juice it or lose it」を披露しました。平凡な Breakout に Juice——フラッシュ、振動、ダメージ表示、音効、パーティクル——を足しただけで、一気に「遊びたくなる」ゲームに変わる。その動画は 10 回以上見返しました。今回は、自分が踏んだ坑と試行錯誤を「五感フィードバック」——フラッシュ、振動、ダメージ表示、音効、パーティクル——として整理します。理論から実装、具体パラメータまで押さえて、「動く」から「気持ちいい」へ引き上げましょう。
第 1 章:手応えの理論 — 19 特徴フレームワークと Juice
2022 年、Lin らが IEEE Xplore で発表した《What Features Influence Impact Feel?》は、打撃感に効く 19 の設計特徴を体系化した論文です。初めて読んだときは情報量に圧倒されましたが、視覚・聴覚・触覚・アニメーション・カメラなど、手応えの要素が一覧できるのが強みです。
特に効いてきたのは hit stop(ヒットストップ)、sound coherence(音の一貫性)、camera control(カメラ制御) の 3 つ。論文でも影響度はこのあたりが大きい。hit stop はシンプルで、更新ループを一瞬止めてアニメーションを固定する——ただしワールド全体は止めない。実測では 0.05〜0.1 秒がちょうどよく、短すぎると気づかれず、長すぎるとカクつきに感じられます。
Kyle Gabler が言う Juice とは、ルールは変えずに「気持ちよさ」を足す細部のこと。ボタン押下の微スケール、攻撃のフラッシュ、ヒット時の振動、コインのパーティクル——全部、Juice です。Jonasson と Purho のデモは、地味な Breakout に要素を足していく過程そのもの。「手応えはセンスじゃなく、設計できる」と腹落ちしました。
ここが肝:視覚・聴覚・触覚はセットで設計する。Meta も Android も触覚ガイドで同じことを言います。振動だけ、音だけ——分けて作ると違和感が出ます。私も振動だけ入れて「なんか変」と言われたことがあり、音を同期したら解消しました。
第 2 章:振動フィードバック — 触覚から神経ループへ
振動はパラメータ調整に時間がかかります。崩壊 3rd は 0.08 秒・40Hz のリニアモータ振動 を使い、短くて力強い——指が痺れにくいバランスです。ただし 音効は 12ms 以内に同期 が必須。ソニー研究所のデータでは、誤差 15ms 未満で操作確認が 22% 速くなる。15ms の差がここまで効くのは、正直驚きでした。
3 つの軸は 時間・周波数・振幅 です。
- 時間:通常攻撃 0.08〜0.12 秒、重攻撃 0.15〜0.2 秒
- 周波数:40Hz 前後(リニアモータ向け)。高すぎると刺さる
- 振幅:弱 30%、強 70% など段階を。常に最大だと疲れる
非線形減衰 も忘れずに。Arena Breakout(暗区突围)の実弾テストは、ロシア TsNIITochMash 研究所(2021)の連射データを参考にしています。連続射撃では強度を下げないと指が痺れる。10 発連続なら 50% まで落としても、リズム感は残ります。
ミニゲームは端末差が大きい。ColorOS の 4D ゲーム振感 2.0 や PUBG Mobile 向け振動設定など、プラットフォーム最適化は進んでいますが、リニアとローターで体感は別物。まず Xiaomi・Huawei・OPPO など主流機でベースラインを取り、そこから詰めるのが現実的です。
第 3 章:フラッシュとパーティクル — 視覚の瞬間インパクト
フラッシュは最も手軽な視覚フィードバック。被弾瞬間に画面(またはキャラ)を白くする 50〜100ms が目安です。30ms は短すぎて見逃され、150ms は画面が「にごる」感じになります。Sense Central のチュートリアルでも、画面シェイクとセットが効果的——弱攻撃 2〜3px、強攻撃 8〜10px、時間はフラッシュと揃えて 50〜100ms。
パーティクルは 拡散 → 衝突 → 消失 の 3 段階。命中点から 200〜400px/s で飛ばし、地面や障害物でバウンスさせ、0.5〜1 秒でフェードアウト。数は 20〜30 個 で十分。多すぎるとごちゃつきます。
Unity Feel プラグインは 130+ のフィードバックモジュール を持ち、音・カメラ・アニメ・GameObject・VFX・ポストプロセス・UI・テキスト・シェーダー・時間などをカバーします。よく使うのは次の 4 つです。
- MMScreenShake:画面シェイク、パラメータをビジュアル調整
- MMParticlesInstant:パーティクル即時生成
- MMSoundManager:レイヤー再生対応の SE 管理
- MMTimeScale:時間停止(hit stop)
Cocos Creator のボタンは Scale Transition が定番。duration 80〜120ms、zoomScale 0.9。実測では duration 0.08 秒、zoomScale 0.92 が押し心地よい。Normal / Hover / Pressed / Disabled / Active の 5 状態——Hover で明度 +10%、Pressed で振動、Active で呼吸アニメなど、状態が一目で分かると UX が上がります。
パーティクル寿命の例(Cocos Creator TypeScript):
// パーティクル寿命の管理
const particleSystem = this.node.getComponent(cc.ParticleSystem);
particleSystem.duration = 0.8; // 全体の寿命 0.8 秒
particleSystem.startLifetime = 0.5; // 1 粒あたり 0.5 秒
particleSystem.startSpeed = 300; // 初速 300px/s
particleSystem.gravityModifier = 0.5; // 重力係数 0.5
particleSystem.rateOverTime = 30; // 秒間 30 粒生成
第 4 章:ダメージ表示と音効 — 聴覚のタイミング
Godot 4 のタイプライター+SE 連動が参考になります。ダメージ数字を 1 文字ずつ出し、各文字で軽い振動と短い SE——数字だけでなく、状態・実績・ヒントにも使える のがポイント。位置は命中点付近、キャラを隠さない。表示 1〜2 秒でフェードアウト。
SE のタイミングは崩壊 3rd 同様 12ms 以内。20ms を超えると「遅い」と感じられ、振動との同期誤差は 15ms 未満が目標(ソニー研究所)。近接は金属音、遠距離は爆発音、足音・風など環境音で没入感を足す。以前は全攻撃同じ SE 一択で「単調」と言われ、弱「パン」、強「ドン」、必殺は専用 SE と層を分けて改善しました。
Meta の触覚ガイド:DO 全体設計(視覚+聴覚+触覚)、DON’T 単体設計。振動→音→視覚の順で後付けしない。Android Haptics も同じです。試した 2 パターン:
- 案 1:振動 → 音効 → フラッシュ → パーティクル → ダメージ表示(12ms 間隔)
- 案 2:振動+音効同時 → フラッシュ(20ms 後)→ パーティクル(50ms 後)→ ダメージ表示(100ms 後)
案 2 の方が「当たった感」が強い。振動と音で即時インパクト、フラッシュとパーティクルで爆発感、最後に数字で情報確認——という流れです。
第 5 章:五感連携 — マルチモーダル設計の原則
要は 視覚・聴覚・触覚を最初から同時に設計 すること。Meta、Android、LinkedIn のガイドも同趣旨です。視覚だけ先に作って、あとから音と振動——時序がズレて体験が崩れる典型パターンを、私も踏みました。
汎用の時序は 振動+音効同時 → フラッシュ(20ms)→ パーティクル(50ms)→ ダメージ表示(100ms)。即時の衝撃、視覚の爆発、情報の確認——この順序が基本。軽攻撃は振動+音だけ、重攻撃は 5 要素全部、などシーンで調整します。
バランスも重要。多すぎるとうるさい、強すぎると指が痺れる、長すぎるとテンポが崩れる。
- 頻度:通常攻撃は秒 3〜5 回まで。必殺は別設計
- 強度:弱 30%、強 70% など段階付け
- 時間:振動 0.08〜0.12 秒、フラッシュ 50〜100ms、パーティクル 0.5〜1 秒
100ms ルール——Cocos Creator の UI ガイドでも、クリックから 100ms 以内 に視覚か聴覚の反応が必要とされています。超えると「操作が遅い」と感じられ、確認感が落ちます。実測でも、100ms は心理しきい値として効いていました。
完成後のチェックリスト:
- 振動と音効は同期しているか(誤差 15ms 未満)
- フラッシュは 50〜100ms か
- パーティクルは 20〜30 個程度か
- ダメージ表示がキャラを隠していないか
- 秒 3〜5 回を超える連打フィードバックになっていないか
- 弱・中・強で強度を分けているか
第 6 章:実装 — Cocos Creator / Unity で組み立てる
Cocos Creator の Haptics API は vibrateShort、vibrateLong、カスタムパターン(Oculus Touch、Valve Index など)に対応。WeChat・Douyin ミニゲームは短/長振動のみで、パラメータ指定は限定的。VR なら触覚コンポーネントで強度とパターンを細かく制御できます。
ボタン実装(Cocos Creator TypeScript):
// Cocos Creator ボタンフィードバックの実装例
const button = this.node.getComponent(cc.Button);
button.transition = cc.Button.Transition.SCALE;
button.duration = 0.08; // アニメーション 80ms 推奨
button.zoomScale = 0.92; // 押下時のスケール
// 振動フィードバック
button.node.on(cc.Node.EventType.TOUCH_START, () => {
if (typeof cc.vibrateShort === 'function') {
cc.vibrateShort(); // 短振動
}
});
// クリック SE
button.node.on(cc.Node.EventType.TOUCH_START, () => {
cc.audioEngine.playEffect(this.clickSound, false);
});
Unity では Feel プラグイン(Unity Awards 2021 Best Artistic Tool)を強く推します。130+ モジュール、エディタでリアルタイムプレビュー。MMScreenShake、MMParticlesInstant、MMSoundManager、MMTimeScale が定番です。
Unity 振動(C#、Feel プラグイン):
// Unity 振動フィードバック(Feel プラグイン)
using MoreMountains.Feedbacks;
public class AttackFeedback : MonoBehaviour
{
public MMFeedbacks feedbacks;
void OnAttackHit()
{
feedbacks.PlayFeedbacks(); // 全フィードバックを再生
}
}
// 設定例:振動 + SE + フラッシュ + パーティクル
feedbacks.FeedbacksList = new List<MMFeedback>()
{
new MMFeedbackHaptics() { Duration = 0.08f, Amplitude = 0.7f },
new MMFeedbackSound() { Sound = attackSound, Volume = 0.8f },
new MMFeedbackFlash() { FlashDuration = 0.1f },
new MMFeedbackParticlesInstant() { ParticlesPrefab = hitParticles }
};
矢印パズル系ミニゲームでは、生成・操作・消去・スコアの 4 モジュールそれぞれにフィードバックを付けました。生成で軽振動、成功で SE、消去でフラッシュ+パーティクル、得点更新でダメージ表示。軽い操作は軽く、重い操作は重く——この段階付けが効きます。
まとめ
手応えはセンスではなく、設計です。「Juice it or lose it」が示す通り、hit stop・sound coherence・camera control を粗くすると、打撃感は一気に落ちます。私が「動く」から「気持ちいい」へ持っていくために試した五感フィードバック——フラッシュ、振動、ダメージ表示、音効、パーティクル——を、この記事にまとめました。
今日から試せる 3 点:
- 振動:0.08 秒・40Hz から。SE は 12ms 以内、誤差 15ms 未満
- フラッシュ:50〜100ms の白フラッシュ+パーティクル 20〜30 個
- ツール:Unity Feel(130+ モジュール)か Cocos Creator Haptics API
次のプロジェクトでパラメータを当てはめてみてください。「操作がふわふわする」という声は、確実に減るはずです。手応えは一度で完成しません——今も私は微調整を続けていて、そのたびに新しい発見があります。
6分で読めます · 公開日: 2026年5月21日 · 更新日: 2026年7月14日
AI と Cocos 小ゲーム開発実践
検索からこのページに来た場合は、前後の記事もあわせて読むと同じテーマの理解がかなり早く深まります。
前の記事
Cocos Creator キャラクター移動と攻撃:ノードからアニメーションまでの実装
ノード構成からアニメーションステートマシンまで、Cocos Creator キャラクター制御の 3 層実装を解説。キーボード・タッチ・バーチャルジョイスティックの 3 種入力制御の完全コード例付き
第 10 / 21 記事
次の記事
AI でゲーム効果音プロンプトを生成:攻撃・取得・勝利・失敗の書き方
ElevenLabs、SFX Engine、AudioLDM、MusicGen の 4 大 AI 効果音生成プラットフォームを比較。攻撃・取得・勝利・失敗の 4 種類の効果音プロンプトテンプレート(日英対照)と Cocos Creator 統合フロー、デバッグのコツを紹介します。
第 12 / 21 記事



コメント
GitHubアカウントでログインしてコメントできます