😁

VisualScriptingのTimerはいいぞ

2022/05/28に公開

概要

みなさんはVisualScripting使ってますか?
私は使ってます。

https://unityroom.com/games/u1w2205slotrouge

Unity1Weekという1週間でゲームを作る企画があるのですが
そこで作ったゲームです。
ほとんどVisualScriptingを使って作りました。

https://www.youtube.com/watch?v=tRwKEqHLuk4&t=67s

さて、本題のTimerですが、UnityJapanさんで紹介されています。

このTimerが使い勝手がいいので私も紹介させて頂きます。

基本機能

このようなノードです。

名称 機能 備考
Start ノードの入口 必ず使う
Pause 一時停止 使ってない
Resume 再開 使ってない
Toggle 停止再開制御 使ってない
Duration タイマーの期間 必ず設定する
Unscaled TimeScaleを無効にする 使ってない
Started 開始時に呼ばれる 使ってない
Tick 毎フレーム呼ばれる すごい使う
Completed 終了時に呼ばれる。ノードの出口 ノードが続くなら使う
Elapsed 経過時間 秒数毎に何かしたい時、Tickの場面で使う
Elapsed % 経過時間を0~1の間で返す 秒数毎に何かしたい時、Tickの場面で使う
Remaining 残り時間 秒数毎に何かしたい時、Tickの場面で使う
Remaining % 残り時間を0~1の間で返す 秒数毎に何かしたい時、Tickの場面で使う

各機能はこんな感じですが、半分くらい使ってません。
それでもすごい使い勝手がいいです。

使い方1 Transformの移動

上のUnityJapanさんの動画で説明されているのは、オブジェクトの移動ですね。
Dotweenのようなイメージかと思います。

私が作ったゲームでは

女の人にカメラが近づいていってます。
こんな感じで、シーン遷移の演出のカメラの移動に使用しました。

その時のスクリプトがこちらです。

Tick毎に、SetPostionを動かしています。

動かすための変数は、Remaininig %に定数を乗算しています。

使い方2 ただのウェイト

こちらのスクリプトの真ん中のTimerがそれです。

左のTimerから、右のLoadSceneの間にちょっとだけウェイトが欲しいなと思って追加しました。
上の例だと、2秒のウェイトがかかってます。

使い方3 カウントアップ

まずはこちら

ポイントをカウントアップして表現するために使用しました。

Tick毎にSetTextにポイント設定しています。

この変数は、Elapsed %を使って経過時間の増加とポイントを比例させています。

まとめ

Timerノードは、他にも可能性のある使い勝手のよさそうなノードですね。

これからも研究していこうと思います。

Discussion