⏲️
シンプルなストップウォッチギミックをつくる手順 #cluster
シンプルなストップウォッチの作り方を教えて欲しいと相談されたのでまとめてみました。
分:秒 表示ができるストップウォッチを作る事ができます。
あと、globalギミックを使わないので ワールド内に複数 配置しても動作するようになります。
設置先ワールド
シンプルなストップウォッチギミック
Creator Kit 使うコンポーネント
ストップウォッチ アイテム 概要

下記の内容の アイテムを作成していきます。
-
Startシグナルを受け取りタイマー開始 1秒毎 に実行する - 変数
isActiveが true か確認 CountUp シグナルを発行する - CountUp ジグナルを受け取ったら 変数
Countを加算する - Startスイッチをインタラクトするとこでカウント開始
- 停止スイッチをインタラクトすることでカウント停止
- リセットスイッチをインタラクトするとでカウントリセット
Stopwatch ギミックを作る
- Hierarchyで右クリック GameObject を作成して
Stopwatchと名前を変更する- Transformを調整
Pos X:0 Y:1.5 Z:0 Scale 0.02
- Transformを調整

- 1秒ループするタイマーを作成します。Inspector で Add Component で
Item Timerを追加- Key: Start
- Triggers を 2項目 追加
- Key: Fire Type: Signal <- 1秒ごとに Fire シグナルが発行される
- Key: Start Type: Signal

- 変数
isActiveの値が true か確認するロジックを作ります。Inspector で Add Component でItem Logicを追加- Key: Fire <- 1秒ごとに Fire シグナルを受け取る
-
- を押してロジックを追加
Target:this Key:CountUpType: Signal
演算子: = 引数: RoomState Bool thisisActive
- を押してロジックを追加

-
CountUpジグナルを受け取ったら 変数Countを加算するロジックを作ります。
Inspector で Add Component でItem Logicを追加- Key:
CountUp<- CountUp シグナルを受け取る -
- を押してロジックを追加
Target:this Key:CountType: Integer
演算子: Add
引数: RoomState Integer thisCount
引数: Constant Integer 1000 <- 表示フォーマットで日時として利用するために1000を加算する
- を押してロジックを追加
- Key:

Stopwatch 時間を表示する
シンプルなストップウォッチ表示として テキストエリアに 00:00 の分秒を表示できるようにしてみましょう。
- Hierarchy の
Stopwatch以下に UI -> Canvas を追加
2. Hierarchy 上に不要なEventSystemオブジェクトができるので削除する
3. Canvas の設定を調整
Render Mode: World Space <- 重要なので忘れずに!
Rect Transform X:0 Y:0 Width: 200 Height: 60 - Hierarchyの Canvas 右クリック UI -> Legacy -> Text でテキスト欄をつかする
3. Text の設定を調整
Rect Transform X:0 Y:0 Width: 200 Height: 60
Text: 00:00 Alignment: 中央よせ Best Fit: true (チェックをつける) - Canvas -> Text に 変数
Countを表示するコンポーネントを追加数る
Inspector で Add Component でSet Text Gimmickを追加
Target: Item Key: Count Item: Stopwatch
Type: Signal
Format: {0:mm:ss} <- Signal を 分秒 で表示する文字フォーマットを指定



開始スイッチ
インタラクトすると タイマーが開始される スイッチを作ります。
- Hierarchyで右クリック GameObject を作成して
StartSwitchと名前を変更する - Cube を追加
Pos X:-1 Y:1 Z:0 Scale 0.03 - StartSwitch に Inspector で Add Component で
Interact Item Triggerを追加-
- を押して trigger を追加
Target: SpecifiedItem Key: isActive Value: Bool true(チェックをつける)
Target Item:Stopwatch<- Hierarchy のStopwatchを設定
- を押して trigger を追加
-
- を押して trigger を追加
Target: SpecifiedItem Key: Start Value: Signal
Target Item:Stopwatch<- Hierarchy のStopwatchを設定
- を押して trigger を追加
-

停止スイッチ
インタラクトすると タイマーが停止される スイッチを作ります。
- Hierarchyで右クリック GameObject を作成して
StopSwitchと名前を変更する - Cube を追加
Pos X:0 Y:1 Z:0 Scale 0.03 - StartSwitch に Inspector で Add Component で
Interact Item Triggerを追加-
- を押して trigger を追加
Target: SpecifiedItem Key: isActive Value: Bool false(チェックを外す)
Target Item:Stopwatch<- Hierarchy のStopwatchを設定
- を押して trigger を追加
-

リセット
インタラクトすると タイマーがリセットされる スイッチを作ります。
- Hierarchyで右クリック GameObject を作成して
ResetSwitchと名前を変更する - Cube を追加
Pos X:1 Y:1 Z:0 Scale 0.03 - StartSwitch に Inspector で Add Component で
Interact Item Triggerを追加-
- を押して trigger を追加
Target: SpecifiedItem Key: Count Value: Integer 0
Target Item:Stopwatch<- Hierarchy のStopwatchを設定
- を押して trigger を追加
-
- を押して trigger を追加
Target: SpecifiedItem Key: isActive Value: Bool false(チェックを外す)
Target Item:Stopwatch<- Hierarchy のStopwatchを設定
- を押して trigger を追加
-

まとめ
Item Logic を利用することで不具合が少なくシンプルにストップウォッチを作ることができます。
停止スイッチの処理を On Collide Item Trigger にするとクリアまでにかかった時間を表示したりにも使えるはず。
表示処理の文字フォーマット 複合書式指定 の使い方も覚えると他でもつかて便利だと思います。
( シンプルなので 🍆さんや🐸さんもこれでストップウォッチが作れるハズ... )
Discussion