今回の記事では、ワールドに入室時にアイテムを生成するギミックのつくり方を紹介します。
このギミックを使えば入室した人だけではなく、元々ワールドにいる人にも影響を生み出せます。

使用するコンポーネントについて
まず、今回使用するコンポーネントについて説明します。
- On Join Player Trigger |Creator Kit ドキュメント
- プレイヤーが入室した時に通知するトリガーです。入室を検知したOn Join Player Triggerがメッセージを送信します。
- Create Item Gimmick|Creator Kit ドキュメント
- アイテムを生成するギミックです。On Join Player Triggerから送られたメッセージを検知してアイテムを生成します。
今回はこの2つのコンポーネントを使って、下図のような仕組みにすることで入室時にアイテムを生成するギミックをつくります。

今回はCreate Item Gimmickを使用していますが、他のギミックに置き換えることも可能です。例えば、音を再生するPlay Audio Source Gimmickに変更し、入室音をつくることもできます。
入室音といった効果音については紹介している記事があります。気になる方はこちらをご覧になってみてください!
ワールド入室時に球体を生成するギミックをつくる
それでは、順を追って解説していきます!
今回は入室時に球体が生成されるギミックをつくります。
そのために必要な
- 入室を検知するトリガー
- 生成される球体オブジェクト
- 球体を生成するギミック
を順につくっていきます。
今回は、テンプレートワールドの1つであるShooterを利用します。このプロジェクトはテンプレートプロジェクトの「Asset/ClusterCreatorKitTemplate/Shooter/Scenes/Shooter」に入っています。
テンプレートの導入の仕方が分からない……という方は下記の記事をご覧ください!
入室を検知するトリガーをつくる
まず、入室を検知するトリガーをつくります。下図で点線で囲った部分の仕組みをつくります!

- 「Hierarchy」ウィンドウで右クリックするか、GameObjectメニューの「Create Empty」から空のオブジェクトを作成します。
- つくった空のオブジェクトの名前を「OnJoinPlayer」に変更します。

オブジェクト「OnJoinPlayer」にコンポーネントをつけて、入室を検知できるようにしていきます。
- オブジェクト「OnJoinPlayer」にAdd Component でOn Join Player Triggerを追加します。
次は球体を生成するために、メッセージを送信するようにします。
- On Join Player TriggerのTriggersの下の「+」をおして、入力UIを表示させてください。

- 表示された入力UIのTargetを「Global」、名前を「OnJoinPlayer」、Valueを「Signal」と設定してください。

これでオブジェクト「OnJoinPlayer」が、入室を検知し、「OnJoinPlayer」というメッセージを送信するようになりました!
このメッセージをCreate Item Gimmmickで受け取るようにすることでギミックを発火させることができます。
生成される球体オブジェクトをつくる
次に、生成される球体オブジェクトをつくります。下図の「Sphere」の部分をつくっていきます!

- 「Hierarchy」ウィンドウで右クリックするか、GameObjectメニューの「3D Object / Sphere」からSphereを作成します。
今回は高いところに生成して積もるようにしたいので、重力で落ちるようにします。
- SphereにAdd Componet で Rigidbody を追加します。
- ※Rigidbodyはオブジェクトに重力をつけることができるUnityのコンポーネントです。
Create Item Gimmickを利用して生成するには、オブジェクトは Item である必要があります。
- SphereにAdd Componet で Item を追加します。

また、Create Item Gimmickでは1つだけではなく大量に生成することもあるので、複製しやすいPrefabであることが推奨されています。
- Sphereを「Hierarchy」ウィンドウから「Project」ウィンドウにドラッグ&ドロップします。

これでSphereがPrefabになりました。
- 「Hierarchy」ウィンドウ内のSphereは使わないので消去しときます。
Prefabについては下記の記事で紹介しています。初めて使う方はこちらを参考にしてみてください!
球体を生成するギミックをつくる
最後に、球体を生成するギミックをつくります。下図で点線で囲った部分の仕組みになります!

- 「Hierarchy」ウィンドウで右クリックするか、GameObjectメニューの「Create Empty」から空のオブジェクトを作成します。
- 空のオブジェクトの名前を「OnJoinPlayerCreateSphere」に変更します。
- 高い位置から生成するために、オブジェクト「OnJoinPlayerCreateSphere」の座標をX 0、Y 10、Z 0に変更します。

オブジェクト「OnJoinPlayerCreateSphere」のメッセージを検知して、アイテムを生成できるようにします。
- 「OnJoinPlayerCreateSphere」にAdd ComponetでCreate Item Gimmickを追加します。
- Create Item GimmickのTriggersの下の「+」をおして、入力UIを表示させてください。
- Targetを「Global」、Keyを「OnJoinPlayer」に設定します。

- PrefabであるSphereをCreate Item GimmickのItem Templateにドラッグ&ドロップします。

これで、入室時に送信されるメッセージ「OnJoinPlayer」を検知して、Sphereを生成できるようになりました!

最後にワールドをアップロードして確認してみましょう。

入室時に上空から球体が生成されるようになりました!
今回は球体が生成されるシンプルなものですが、この仕組みを応用して色んな入室体験をつくってみましょう!

(試しに今回のを少し工夫して、入室時の運試しシステムをつくってみました!)