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

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

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

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

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

  • 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が消えるようになります。

On Create Item TriggerのValueをTrue(チェックを外す)にすると、最初は消えた状態の、出したり消したりすることができるギミックをつくることができます。

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

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

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

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