見出し画像

オブジェクトがついてくるアイテム

オブジェクトがついてくるアイテムとは、手に持ったアイテムにオブジェクトの動きを連動させるという意味です。
今回作るギミックの機能は、アイテムを持つと動きが連動するオブジェクトが出現し手放すと消える、というものです。

こんなところで使ってます!

Walk in the Fieldのアイテム
持つと背景が変化
実験場 Grab Switch

アイテムにオブジェクトを連動させる

まずは持つことができるアイテムを用意しましょう。
作り方は公式のガイドを参照してください。

次に連動させるオブジェクトを用意します。
実験場にあるようなObjectSkyboxシェーダーを使用したCubeを用意してもいいですし、好きなものを用意してください。
ObjectSkyboxシェーダーを使用したCubeは以下のリンクを参照してください。

両方用意できたら持てるアイテムの子にオブジェクトを配置してください。

Hierarchyでこのように配置

ただし、アイテムはだめです。clusterでワールドを作成するルールとして、アイテムの子にアイテムを配置できないことになっています。
もし、このように配置した場合はアップロードができません。

この配置はできません

オブジェクトの場所はどこでもかまいません。確認しやすいように視界に入る位置がいいでしょう。
配置できたらプレビューで確認してみましょう!

作成例としてアイテムをCube、オブジェクトをSphereにしました。
手に持ったCubeの動きに合わせてSphereが連動して動きます。
距離は関係なく、どう配置しても同じ動きになります。

アイテムをスイッチにする

アイテムとオブジェクトを連動させることができました。
これでもじゅうぶん楽しい表現をすることができますが、さらにスイッチ機能を追加させようと思います。
スイッチにすることで持つとオブジェクトが出現、離すと消えるという機能になります。

それでは先ほど作成したアイテムに次のコンポーネントを追加してください。
On Grab Item Trigger アイテムが掴まれたことを通知するトリガーです。
On Release Item Trigger アイテムが手放された時に通知するトリガーです。
Global Logic メッセージを読み取り、計算した結果をどのギミックからでも読めるメッセージとして通知するオペレーションです。

On Grab Item Trigger

On Grab Item Triggerの設定
TargetはGlobal
その横にある黒い枠にはギミックと関連づけるための文字列(Keyと言います)を入力。好きな文字列でいいですが、ここでは「grab」とします。 
ValueはSignalにしてください。

On Release Item Trigger

On Release Item Triggerの設定
TargetはGlobal
その横にある黒い枠は「grab」とします。 
ValueはSignalにしてください。

Global Logic

Global Logicの設定
TargetはGlobal
Keyはgrabと入力。これがトリガーと一致してないと作動しません。
続いてその下にある部分も設定していきます。
1行目は右からObjBoolです。
Objはギミックに通知する文字列となります。
2行目は=Notを選択してください。
3行目は右からRoomStateDoubleObjです。

ロジックの詳しい内容についてはこちら!

これでスイッチの設定は終わりです。

オブジェクトにギミックを追加

オブジェクトには次のコンポーネントを追加します。
Set Game Object Active Gimmick GameObjectのアクティブ状態を切り替えるギミックです。

Set Game Object Active Gimmick

Set Game Object Active Gimmickの設定
TargetはGlobal
KeyはObjと入力。これがロジックと一致してないと作動しません。

最後にオブジェクトのInspectorの一番上にあるチェックを外して非アクティブにしましょう。

これでできました!プレビューで確認してみましょう!
アイテムを持つとオブジェクトが出現し、離すと消えます。
アイテムを持ったまま動くとオブジェクトが連動して動きます。

ObjectSkyboxシェーダーを使用した場合

ギミックをざっくり解説
1.アイテムを持つ又は離すとトリガーがgrabをロジックに通知
2.ロジックがgrabを受け取る。オブジェクトがない時は出現させある時は消す通知Objをギミックに通知
3.オブジェクトのギミックがObjを受け取り、オブジェクトをアクティブに(アクティブの時は非アクティブに)する

こんな場面で使う

このギミックを作ったきっかけは、筆者のワールド「Walk in the Field」で背景を変化させてみたいと思ったからです。
clusterでのオブジェクトの描画距離は最大1000ですがWalk in the Fieldは4000×4000という広大なワールドのため、ObjectSkyboxシェーダーを使った背景では表示しきれません。
そこで、オブジェクトをプレイヤーの動きに連動させて常に表示させるという方法を思いつきました。
アイテムを持ったプレイヤーを中心にオブジェクトが動くので必ず1000以内の距離に表示され、背景が変化したように見えます。

Walk in the Field

動きを連動させると合体したようにも見せることができるので、複数のオブジェクトを疑似的にひとつになったようにできます。
アイテムの子にアイテムを配置しないというルールを守ればいくつでも可能です。
アイディア次第でいろいろな表現に使えそうですね!
自由な発想で自分の世界を表現してみましょう!

<<前の記事
スイッチ3(複数から1つを選択)

次の記事>>
アイテムの生成、破壊

実験場解説トップページ

いいなと思ったら応援しよう!