【cluster】オペレーション(Logic)を使わないストップウォッチの作成

*注意*
初校執筆以降のCluster Creator Kitのアップデートにより、非常に正確なストップウォッチが実現します。
「結果は同期するストップウォッチ」
この記事ではオペレーション(Logic)機能を使わないストップウォッチの作成法について、公開を続けます。

AnimationのキーフレームおよびAnimatorを使った、時間が正確なストップウォッチを作る。
ただしプレイヤー間で0.5秒以下の表示誤差が出る。
また計測中や計測停止後にワールドに入ってきたプレイヤーのタイマーは、初期状態で描画される。

・数字の切り替えアニメーション

スクリーンショット 2020-06-26 12.35.21

それぞれの位に対応する、数字テクスチャを貼ったパーツを用意する。
開始用と停止用のSet Animator Value Gimmickを2つ用意する。

開始用のトリガー/ギミックのパラメータータイプにはSignalを用いる。
停止用のトリガー/ギミックのパラメータータイプにはFloatを用いる。

ワールド全体で同じストップウォッチを共有する場合は、TargetにGlobalを用いる。
別個にカウントを取る場合は、Spicified Itemなどでややこしくなる。

紹介しているモデルは非常に簡素で強引な回転ダイヤル式のものだが、背景に隠す移動、スケール0にするなどでも切替表示ができる構造なら、隠蔽性を持たせられる。

スクリーンショット 2020-06-26 13.12.37

Animationで1の位なら1秒おきに、10の位なら10秒おきの要領でキーフレームを打ち、数字を切り替えていく。
この時キーフレームの補間をConstantにすると、ぱたぱた綺麗に切り替わる。
Animationのインスペクターから、ループを有効にする。

それぞれの位ごとに作るのは面倒なので、AnimatorのSpeed乗算(1の位の切り替えを作ったら、10の位は0.1、小数点第一位は10の要領)で設定してもいい。

・ストップウォッチの開始と停止

─────[開始]─────

スクリーンショット 2020-06-27 12.37.44

開始用に任意のトリガー(インタラクトボタン、コライダーなど)を用意する。
Sizeは2。

開始の合図としてSignalを設定する。
もう一つ、停止後に再度カウントを回すためのFloatを設定し、値は1にする。

スクリーンショット 2020-06-27 12.52.27

パーツの切り替えアニメーションを遷移させる。
切り替えアニメーションを含むAnimatorを開き、エンプティをデフォルトに設定する。

開始用SignalのSet Animator Value Gimmickで呼び起こされる、Triggerタイプのパラメーターを用意する。
Transition Duration(s)は0にしておく

これで、開始の合図に伴いカウントがスタートする。

─────[停止]─────

スクリーンショット 2020-06-26 13.15.49

停止用FloatのSet Animator Value Gimmickで呼び起こされる、Floatタイプのパラメーターを用意する。
デフォルトには1を設定する。

切り替えアニメーションを選択状態のインスペクタータブで、Speed→MultiplierのParameterにチェックを入れ、先ほどのfloatを設定する。

これでアニメーションの再生速度を随時任意のfloat値で変えられるようになった。

スクリーンショット 2020-06-26 13.38.26

停止用に任意のトリガーを用意する。
パラメータータイプはFloatで、Float Valueには0を設定する。

これで停止のトリガーでストップウォッチの計測を停止できるようになった。

・確認

画像5

プレビューで確認する。
ノータッチ状態ではストップウォッチは動いておらず、開始のトリガーで計測がスタート、停止のトリガーで秒数を維持したまま停止したら成功。

ただしプレイヤー間でおよそ0.5秒以下の表示誤差が出る。
また計測中や計測停止後にワールドに入ってきたプレイヤーのタイマーは、初期状態で描画される。

─────以上。

主にトリガーギミックとAnimatorをある程度触ったことがある人向けに、省略した説明があります。
また解説記事に不慣れなため、誤りや不足があるかもしれません。
不明点などはガルペノに直接ご連絡ください。

この記事が気に入ったらサポートをしてみませんか?