今回はUnityのC#スクリプトで利用することの多い「Time.deltaTime」の基本を確認してみます。
はじめに
Unityでタイマーを実装したり、物を移動したりするときに利用する「Time.deltaTime」について、実際の例を見ながら確認していきます。
公式リファレンスは下記です。
簡単な例
以前作成した簡単なストップウォッチで確認してみます。
まずは適当にUIを作成します。

スクリプトは下記です。経過した時間を画面に表示しているだけです。左クリックでスタート、右クリックでストップです。
using UnityEngine;
using UnityEngine.UI;
public class TimeManager : MonoBehaviour
{
[SerializeField] private Text _timerText;
private float TimerCount;
private bool isTimer;
void Awake()
{
TimerCount = 0;
isTimer = false;
}
void Update()
{
if (Input.GetMouseButtonDown(0))
isTimer = true;
if (Input.GetMouseButtonDown(1))
isTimer = false;
if (isTimer)
TimerCount += Time.deltaTime;
_timerText.text = TimerCount.ToString("f3");
}
}
パラメータをセットします。

実行して下記のように動けばOKです。

「Time.deltaTime」を加算したものを画面に表示しています。「Time.deltaTime」には経過時間(最終フレームから現在のフレームまでの間隔)が入っています。
他のスクリプト例
「Time.deltaTime」はUpdate内で下記のような使われ方をします。
transform.position = transform.position + velocity * Time.deltaTime; rb.MovePosition(transform.position + velocity * Time.deltaTime);
transform.positionは位置(距離)になります。velocityには速度が入っているので、経過時間をかけると距離になります。(距離=速さ×時間)
ここで、「Time.deltaTime」を掛けないと経過時間が常に1秒として処理してしまう。というわけですね。
