シンプルなストップウォッチギミックをつくる

Cluster Creator Kitの機能を使った作例を紹介します!
今回は秒単位で時間計測ができるストップウォッチをつくってみましょう。つくり方はいくつかありますが、今回はシンプルなつくり方を紹介します。

ストップウォッチの機能をつくる

まずは、TimerとLogicを使ってストップウォッチの機能をつくっていきます。

  • Hierarchyを右クリック、または上部メニューの「GameObject」からCreate Emptyを選択して新規GameObjectを作成します。
    • 作成したGameObjectを選択してInspectorを開き、Add Componentから必要なコンポーネントを追加していきます。
  • まずはGlobal Timerを追加します。Keyを「Count」、Delay Time Secondsを「1」に設定し、+ボタンでトリガーを追加します。
    • 追加したトリガーのKeyを「CountCheck」、Valueを「Signal」とします。
    • このTimerを使って、1秒ごとに時間をカウントします。
  • 続いてGlobal Logicを追加して、ストップウォッチがカウント中かどうかを判定する部分をつくります。
    • Global LogicのKeyをTimerのトリガーと同じ「CountCheck」にします。
    • +ボタンで計算式を追加して、Keyを「CountUp」、Typeを「Signal」とします。
    • 演算子は「=」、引数は「RoomState」「Bool」でKeyを「isCounting」とします。
    • これでカウント中のフラグ(isCounting)が立っているときだけ次のステップに進むようになります。
  • 最後にもうひとつGlobal Logicを追加し、KeyをCountUpとしてください。+ボタンで計算式をふたつ追加します。
    • ひとつめはKeyを「time」「Integer」、演算子を「=Add」、引数のひとつめは「RoomState」「Integer」「time」、ふたつめを「Constant」「Integer」「1」とします。
    • ふたつめの式はKeyを「Count」「Signal」、演算子「=」、引数「Constant」「Bool」でチェックをつけます
    • このLogicで秒数をカウントし、さらにTimerを呼び出して次の1秒の計測をスタートします。

計測した時間を表示する

TimerとLogicで計測した秒数は「time」というKeyに発行されます。この値を表示できるようにしましょう。

  • 新規GameObjectの作成メニューから「UI>Canvas」を作成します。
    • 作成したCanvasのInspectorで、Render Modeを「World Space」に変更してから、Rect Transformの「Pos X/Y/Z」「Width」「Height」を調整してちょうどいい位置・大きさにします(下記画像の設定が目安です)。
    • また、Dynamic Pixels Per Unitという項目の値を大きくしておくと、テキストが綺麗に表示されるようになります。
      • ※Canvas作成時に「Event System」というオブジェクトが自動作成される場合がありますが、こちらは必ず削除してください。残っているとワールドアップロードができません。
  • HierarchyでCanvasを右クリックし、子オブジェクトとして「UI>Legacy>Text」を作成します。
    • TextのInspectorを開き、Rect TransformのScaleで大きさを調整してください。
    • またCharacter、Paragraphの各項目で、フォントの変更や中央揃えなどテキストの表示方法を細かく設定することができます。
  • Textに「Set Text Gimmick」コンポーネントを追加します。
    • Set Text GimmickのTargetを「Global」、Keyを「time」、Parameter Typeを「Integer」とし、Formatには「{0}秒」と入力します(半角・全角に注意してください)。

これで現在の計測時間が表示されるようになりました。

スタート・ストップ・リセットボタンをつくる

最後にストップウォッチの操作ボタンをつくりましょう。それぞれのInspectorを示すので、それと同じように設定してください。

スタートボタンをつくる

  • まずはスタートボタンです。新しいGameObjectを作成し、名前を「Start」としてください。
  • StartのInspectorで「Interact Item Trigger」を追加します。
    • Interact Item Triggerの+ボタンでトリガーをふたつ追加し、ひとつめはTargetを「Global」、Keyを「Count」Valueを「Signal」、ふたつめはTargetを「Global」Keyを「isCounting」Valueを「Bool」としてチェックをつけます。
    • また、HierarchyのStartを右クリックして、子オブジェクトとして「3D Object>Cube」を作成、Scaleで大きさを調整しておきます。

ストップボタンをつくる

  • 同様にストップボタンをつくります。新しいGameObjectを作成して名前を「Stop」とし、Interact Item Triggerを追加します。
    • +ボタンでトリガーをひとつ追加し、Targetを「Global」Keyを「isCounting」、Valueを「Bool」としてチェックを外します
  • 子オブジェクトにCubeも作成しておきます。

リセットボタンをつくる

  • リセットボタンもつくりましょう。新規GameObjectの名前を「Reset」とし、Interact Item Triggerを追加します。
    • トリガーはひとつでTargetを「Global」Keyを「time」、Valueを「Integer」「0」としてください。これでtimeの値を0にリセットします。
  • Cubeの作成も忘れないでください。

ここまでできたらアップロードして確認してみましょう。スタート、ストップ、リセットボタンでストップウォッチを操作できます

Interact Item Triggerの代わりにOn Collide Item Triggerを使って、スタートからゴールまでの時間を測るなどといったこともできます。
ボタンのデザインやテキストの表示方法もアレンジして、ワールドに合わせて使ってみましょう!

記事をシェアしてワールド制作を盛り上げよう!