オブジェクト・照明を出したり消したりするスイッチをつくる

投稿者:

「Creators Guide」は、メタバースプラットフォーム「cluster」で「つくる」ことにチャレンジしてみたい方に向けた導入ガイドです。

Creators Guideで読むことができるすべての情報はこちらにまとめています。


今回はさまざまなオブジェクト(たとえば照明など)を出現させたり消したりできる「Set Game Object Active Gimmick」を使ったギミックのつくり方の解説をしていきます。

ゲームだけでなく演出の切り替えなど応用の幅が広いギミックなので、ぜひ使ってみてください!

事前準備

まず、clusterにワールドをアップロードできる環境を事前に用意してください。

準備はこちらを参考にしてください。

はじめてのワールド作成

上記で紹介する方法以外ではテンプレートプロジェクトを利用するのがおすすめです。下記のページからテンプレートプロジェクトをダウンロードして、Unityで開くことで、clusterへアップロードする環境まで一気に準備することができます。

ボタンを押すとオブジェクトが消えるギミックをつくる

まずは、ボタンを押すとオブジェクトが消えるという機能を作ってみましょう。

  • まずは消えるオブジェクトを設置します。Hierarchyを右クリック、または上部メニューのGameObjectからSphereを作成しましょう

このギミックを使うことでオブジェクトのアクティブ状態を切り替える、つまり出現させたり消したりすることができます。

Set Game Object Active Gimmickの設定をしていきます。

  • Targetは「Global」、Keyは「objectActive」としましょう

続いて、Sphereを消すためのメッセージを送るボタンをつくります。

  • 同様にHierarchyを右クリックし、Cubeを作成します
  • Cubeの位置や大きさはTransformで調整しましょう

シーンは以下のような状態になっていればOKです!

Interact Item Triggerの付いたアイテムはクリック/タップすることでトリガーを発動させ、ギミックを動かすことができます。

  • Interact Item Tirggerの+ボタンを押してトリガーを設定していきます
  • ギミックに合わせてTargetは「Global」、Keyは「objectActive」とします
  • さらにValueは「Bool」とし、その右に現れるチェックボックスはチェックが付いていない状態にしておきます

Set Game Object Active Gimmickが付いたオブジェクトは、指定のKeyにBool型、つまりTrueかFalseのいずれかの値を持つメッセージを受け取ると、Trueならアクティブに、Falseなら非アクティブになります。チェックが付いている状態がTrue、付いていない状態がFalseです。

アップロードして確かめてみましょう。入室時にはSphereが存在しますが、Cubeをクリックすると消えてしまいます。

また、始めはSphereを非アクティブにしておいて(画像のチェックを外す)、Interact Item TriggerのValueをTrue(チェックを付ける)にすると、始めは消えていたものがボタンで出現するということもできます。

コンポーネントをふたつつけるだけで「ボタンを押すとオブジェクトが消えるギミック」ができました!この仕組みを図にしてみるとこんな感じになります。

ボタンを押すとオブジェクトが現れたり消えたりするギミックをつくる

これでは一度しか動作しないので、ボタンを押すたびにオンオフが切り替わるようにしてみましょう。

いくつか方法がありますが、今回はロジックを使った方法を紹介します。

  • まずはCubeのInspectorでAdd ComponentからGlobal Logicコンポーネントを追加します

ロジックを使うと発行されているメッセージの値を使った計算ができます。

今回はNotという計算を使います。これはBool型の値について、入力値がTrueならFalse、FalseならTrueと逆転した値を返します。

ロジックの設定をしていきます。なお、始めの状態や入力中にエラーが表示されますが適切に入力すれば消えるので気にしなくて大丈夫です。

  • まずTargetは「Global」、Keyは「objectToggle」としましょう
  • 次に+ボタンを押してロジックを追加します
  • 出てきた項目のうち、一番上の行のTargetは「Global」で固定です
  • その隣のKeyに「objectActive」を入れ、一番右の選択欄は「Bool」にしましょう。これで計算結果が「objectActive」として発行されるようになります
  • 2行目の選択欄は先程説明した「Not」を選びます
  • 最後に3行目の一番左の選択欄で「RoomState」を選び、その隣は「Bool」、右側の入力欄にはふたたび「objectActive」を入力します

Global LogicのInspectorが下図のようになっていればOKです!

ロジックは「あるメッセージが送られたときに、計算結果を別のメッセージに発行する」というものです。ここでは「objectToggle」というメッセージをきっかけに、objectActiveの値を反転した結果を新たにobjectActiveの値として発行します。

さらに、Interact Item Triggerの方も設定を変更しましょう。

このように設定すると、ボタンを押すたびにobjectActiveの値がTrueとFalseで切り替わり、Sphereが現れたり消えたりします。

(おまけ)1回目のクリックでも現れたり消えたりするようにする

このままでもいいのですが、実はこれでは一回目のクリックでは何も起きません。

これを修正するために、CubeにOn Create Item Triggerを追加しましょう。このコンポーネントはアイテムがワールドに出現した直後、つまりこの場合は入室直後にメッセージを発行する機能です。

  • Cubeに「On Create Item Trigger」コンポーネントを追加してください
  • Targetは「Global」、Keyは「objectActive」、Valueは「Bool」にして、チェックを入れてください

画像のようになっていればOKです!こうするとobjectActiveの初期値がTrueとなり、一度目のクリックでFalseに切り替わってSphereが消えるようになります。

「ボタンを押すとオブジェクトが現れたり消えたりするギミック」を図にすると下図のようになります!

応用編:ボタンを押すと照明が点いたり消えたりするギミックをつくる

Set Game Object Active Gimmickはさまざまなオブジェクトに設定することができます。応用編として、照明を点けたり消したりできるようにしてみましょう。

ワールドにDirectional Lightが設置されていると思います。見当たらない場合はHierarchyを右クリックして設置しましょう。

先ほどと同様に、Directional LightにSet Game Object Active Gimmickを設定しましょう。Keyを「objectActive」に設定すれば…

Cubeをクリックするたびに照明が付いたり消えたりするようになりました。

この仕組みを図にすると下図のようになります。「Set Game Object Active Gimmick」がついているオブジェクトを変えれば色々できそうですよね。

Set Game Object Active Gimmickはギミックの中でもシンプルなものですが、使いこなせば幅広い目的に使えます。
「ボタンを探さないと進めない謎解きゲーム」「さまざまな演出を切り替えるライブステージ」など工夫してみてください!


最後に公式による記事や多くのクリエイターの皆さんによるドキュメントやコミュニティを紹介します。
ぜひ活用して自分だけのワールドを制作してみましょう!

▼ 「Cluster Creator Kit」の全てが分かる公式ドキュメント
Cluster Creator Kit ドキュメントhttps://docs.cluster.mu/creatorkit/

▼ クリエイターによる投稿記事まとめ
ワールド制作部https://note.com/cluster_official/m/m1fd772ab8f45
アバター制作部https://note.com/cluster_official/m/m6b18e343f35c
イベント制作部https://note.com/cluster_official/m/m7155e6f6887f

▼ 分からないことがあればコミュニティを活用してみましょう!
Cluster Creator Community Discord
https://discord.gg/DHQmAfDhkt