Delta Sceondsを使う方法
Delta Sceondsは、前フレームからの時間を示しています。
なので、Delta Secondsを足していくことで時間を計測できます。
ですが、秒単位なので取り扱いが面倒な場合があります。
(例えば、「時:分:秒」の形式で表示したい時)
Set Timerを使う方法
Set Timerは指定したEventを一定時間後、または一定間隔で呼び出すノードです。
なので、Timeピンに制限時間を入れれば、↑のようにシンプルな形で実装できます。
また、loopingにチェックを入れると、60秒間隔でEventを呼ぶようになります。
ですが、計測開始からの経過時間の情報がないので
残り時間表示的なことができません。
Delayを使う方法
Delayは、指定した時間後に続きの処理を行うノードです。
使い方としては、先ほど紹介したSet Timerノードに近い感じです。
(ですが、ある状況下では結果が異なったり…詳細は後述)
なので、経過時間の情報がないという欠点も同じです。
数秒後などの短時間の場合は、これでサクッと実装してもいいかもしれません。
TimespanとDatetimeを使う方法
制限時間を実装するなら、オススメはこの方法です。
- Timespan
- Datetime
Nowノードは、現在時刻(Datetime型)を渡してくれます。
↑では【現在時刻(Datetime) - 計測開始時刻(Datetime) = 経過時間(Timespan)】
を行うことで、時間の計測を行っています。
このTimespanとDatetimeを使う利点は、
各時間単位における値を返すノードが使うことができることです。
残り時間を表示したい場合は、これらのノードが役に立つと思います。
おまけ ~ Time Dilationとの関係 ~
スローモーションや早送りを実装する際、
「Set Global Time Dilation」ノード、「Set Custom Time Dilation」ノード、
または、「slomo」コマンドによる処理速度の変化を使用すると思います。
実は、これらを使用すると、
先ほどまで紹介してきた計測手法の一部では
処理速度の変化の影響を受けてしまい、正確な時間を測れなくなります。
具体的には、こんな感じ
- 影響を受ける
- Delta Sceonds
- Delay
- 影響を受けない
- Set Timer
- TimespanとDatetime
じゃあ【Set Timer】と【Timespan、Datetime】だけ使えばいいのか、
というと、そうではない時もあります。
例えば、「スローモーション中は残り時間の減り方もスローに」
という演出をしたい場合は、影響を受けない手法だと色々と面倒です。
つまり、用途に応じて使い分ける必要があるということです。
追記(2019/3/19):
久々に確認したらいつの間にかSet Timerも影響を受けるようになっていました…
…何回かこの仕様で頭が混乱したので、まとめてみました。
もっといい方法があるよ!という方は、教えて頂けるとありがたいです!