コードの型
物体の移動や数値の加算など、「時間経過」を伴う処理で使います。
C#
void Update()
{
// 毎秒 5メートル移動させる
// 速度(5)× 1秒あたりの経過時間(Time.deltaTime)
transform.Translate(5 * Time.deltaTime, 0, 0);
}
コードの仕組み
なぜこれが必要かというと、「PCの性能によってゲームの進む速さが変わってしまうのを防ぐため」です。
- 毎フレームの罠:
Update()は、PCの性能が良いと1秒間に100回呼ばれ、古いPCだと30回しか呼ばれません。 - そのまま足すと…: もし
x = x + 0.1という処理をすると、高性能PCでは一瞬でキャラが画面外へ飛んでいき、古いPCではのろのろ動くことになります。 - Time.deltaTimeの正体: 「前回のフレームから今回のフレームまでにかかった時間(秒)」です。これを使うと、フレームレートが何回であろうと、「1秒間に移動する距離」を一定に保つことができます。
活用例(タイマーと移動)
連打ゲームでも使っていた「時間の減算」や、キャラクターの移動に必須です。
C#
// 1. タイマーのカウントダウン(1秒ずつ減る)
timeRemaining -= Time.deltaTime;
// 2. キャラクターの移動(毎秒 10単位進む)
float speed = 10.0f;
transform.position += Vector3.right * speed * Time.deltaTime;
その他(重要ポイント)
- 「魔法の掛け算」: 距離や数値を変化させる時に
* Time.deltaTimeを掛けるだけで、「PCのスペックに依存しない滑らかな動き」が手に入ります。 - Update() 以外では使わない:
Start()で使う必要はありません。Update()のように「継続的に変化するもの」に対して使います。 - 単位は「秒」:
Time.deltaTimeは常に「秒」単位です。例えば「0.5秒かけて移動させたい」という時も、この値をうまく使うことで物理的に正確な計算が可能になります。
初心者向けイメージ
Time.deltaTime は、「どんなスペックのPCでも、みんな同じ速さでゲームを楽しめるようにする交通整理係」です。
- 性能が良いPCには「少しずつ動いて(deltaTimeを小さく)」と指示し、
- 性能が悪いPCには「大きく動いて(deltaTimeを大きく)」と指示する。
この係員がいるおかげで、あなたは「1秒間に何メートル進ませるか?」という「速さ」だけを考えればよくなります。

コメント