ひとことで
ばね・ダンパーの減衰比を にした状態です。振動しない設定の中で最も速く目標に落ち着く、揺れと遅れのちょうど境界にあたります。照準やカメラのように「素早く、でも揺れずに」追従させたい場面の標準的な選択です。
ゲームでの使いどころ
- 照準・レティクル:ターゲットを切り替えたときに、行き過ぎずにすっと収まる。
- カメラの追従:Unity の
SmoothDampは臨界減衰ばねの近似で、多くのゲームのカメラに使われています。 - UI のアニメーション:割り込みが入っても速度が連続するので、目標が途中で変わっても不自然になりません。
- キャラクターの向き:振り向きを揺れなしで素早く完了させる。
しくみ
固有角振動数 のばねで、減衰比を 1 にすると ()となり、初期のずれ 、初速 0 からの解は
になります。指数関数に 1 次式が掛かった形で、一度も 0 を横切らず(行き過ぎず)に減衰します。
- :減衰が足りず、行き過ぎて振動する。最初の到達は速いが、収まるまでは長い。
- :減衰が強すぎて、ゆっくりとしか戻らない。
- :揺れない範囲で、最も速く 2% 以内に収まる。
右下のグラフは、この 3 つのステップ応答(目標が急に移ったときの進み具合)です。デモの数値では、不足減衰の方が最初は速く目標に届きますが、揺れが収まるまで(整定時間)は臨界減衰の約 2 倍かかっています。
「臨界減衰なら絶対に行き過ぎない」は初速が 0 の場合の話です。すでに目標から遠ざかる向き、あるいは目標を越える向きに速度を持っていれば、臨界減衰でも一度行き過ぎることがあります。
実装のポイント
- smoothTime の意味:おおよそ「目標に着くまでの時間」の目安です。 と対応します。
- 解析解で積分する:上のように解析解(あるいはその近似)でステップを進めると、 が大きくても安定します。
- 速度を状態として持つ:指数減衰と違い、速度を保持するため目標が動いても滑らかです。そのぶん「前フレームの速度」を保存する変数が必要です。
つまずきやすい点
- 動く目標には遅れる:臨界減衰は「止まっている目標に最速で収まる」設定です。動き続ける目標には一定の遅れが残るので、予測を加えるか、PD 制御のようにゲインを調整します。
- 揺れがほしいのに臨界減衰にしてしまう:UI に弾みを出したいなら、あえて 前後の不足減衰を選びます。
- ζ = 1 付近の数値誤差:解析解を場合分けする実装では、 がちょうど 1 の近くで式が不安定になります。少し幅を持たせて臨界減衰の式に切り替えます。
デモで試すこと
- 3 つの照準の動きを見比べてください。赤(ζ = 0.35)は行き過ぎて円を描き、紫(ζ = 2.5)は遅れてじわじわ寄り、水色(ζ = 1)が最も早く標的に落ち着きます。
- 左下の整定時間(誤差が 2% 以内に収まるまでの時間)を比べると、臨界減衰が最短であることが数字で分かります。
- 「固有角振動数 ω」を上げると 3 つとも速くなりますが、揺れ方の性格(ζ)は変わりません。