「Rigidbodyで動かしたキャラがなぜかガクガクする」「PCによって移動速度が変わってしまう」——その原因、コードを書いた場所(UpdateかFixedUpdateか)にあるかもしれません。この2つはよく似ていますが、実行タイミングと役割には決定的な違いがあります。
この記事では、Update()とFixedUpdate()それぞれの仕組みを図解で整理し、「どの処理をどちらに書くべきか」を迷わず判断できるようになることを目指します。
この記事でわかること
UpdateとFixedUpdateの実行タイミングの違い(図解付き)- 「入力・見た目はUpdate、物理はFixedUpdate」の理由
Time.deltaTimeでフレームレートに依存しない動きを作る仕組み- Unity 6での
Rigidbody.velocityの変更点
Sponsored
実行タイミングの違い
Update()とFixedUpdate()の最も重要な違いは、呼び出されるタイミングです。
Update()
- 毎フレーム1回呼び出されます。
- 実行間隔はフレームレートに依存します。つまり、PCの性能が高く、ゲームが秒間120フレーム(120fps)で動作していれば1秒間に120回、性能が低く30fpsしか出なければ1秒間に30回呼ばれます。実行間隔は一定ではありません。
FixedUpdate()
- 固定された時間間隔で呼び出されます。
- この間隔はデフォルトで0.02秒に設定されており、
Edit > Project Settings > TimeのFixed Timestepから変更できます。 - 実行間隔はフレームレートに依存しません。常に一定の間隔で呼び出されることが保証されています。
2つの呼び出し間隔をタイムラインで並べると、違いがひと目で分かります。
