Time.deltaTimeの基本を確認(C#スクリプト)|Unityゲーム作成

今回は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秒として処理してしまう。というわけですね。

タイトルとURLをコピーしました