Menu
CoddyTech

タイマーで生成

CoddyのUnityジャーニー「Unityスクリプティングの基礎」セクションの一部。レッスン 49/67。

数秒ごとに何かを生成するスポナーにはタイマーが必要です。Time.deltaTimeは前のフレームにかかった時間なので、毎回Update()でフィールドに加算すると、経過した秒数がわかります。合計が間隔に達したら生成し、その合計から間隔を差し引きます。

この噴水は0.5秒ごとに水滴を投げます。

public GameObject dropPrefab;
public float interval = 0.5f;
float timer;

void Update()
{
    timer += Time.deltaTime;
    if (timer >= interval)
    {
        Instantiate(dropPrefab, transform.position, Quaternion.identity);
        timer -= interval;
    }
}

timer -= intervalは余りを保持します。フレームが0.51秒で終わった場合、次の0.5秒のカウントは0.01秒から始まり、水滴は一定のリズムを保ちます。timer = 0にするとその余りが失われるため、水滴が少しずつ遅れ、長時間のゲームでは遅延が積み重なります。Inspectorで設定する必要がないため、timerはprivateです。

challenge icon

チャレンジ

中級

ドロッパーはinterval秒ごとにボックスを落とします(インスペクターには2と表示されています)。最初のボックスは再生してから2秒後に落ち、その後は2秒ごとにもう1つ落ちます。

  • 各ボックスをドロッパーの位置に、回転なしで生成します。
  • ボックスを落とすたびに、その番号をログに記録します:Box 1、Box 2など。

再生を押して積み重なっていく様子を確認し、それからチェックを押してください。

自分で試してみよう

using UnityEngine;

public class BoxDropper : MonoBehaviour
{
    public GameObject boxPrefab;
    public float interval = 1f;

    void Update()
    {
        // interval 秒ごとにボックスを落とし、"Box 1"、"Box 2"…をログに出力する
    }
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Unityスクリプティングの基礎のすべてのレッスン