アイテムの生成、破壊
アイテムの生成とは、非アクティブのアイテムをアクティブにするのとは違い、全く何もない所へアイテムを出現させます。逆に破壊はワールドからアイテムを完全に消去します。
今回作るギミックの機能は、スイッチを押すとアイテムが生成され、アイテムを持って離す又は破壊スイッチを押すとアイテムが破壊される。というものです。さらにアイテムを持った状態で使用すると音が出ます。
こんなところで使ってます!


実験場では大きなCubeをクリックするとCapsuleが生成されます。Capsuleを持った状態で使うと音が鳴り、手放して10秒するか小さいCubeをクリックすると破壊されます。
アイテムの作り方
今回はスイッチからではなくアイテムから作っていきます。
まずはオブジェクトを用意しましょう。ここではCapsuleを用意しました。
手に持つアイテムにするので、大きさも調整しましょう。
HierarcyにあるアイテムをProjectの空欄部分にドラッグ&ドロップしprefab化しましょう。

prefabとはオブジェクトをテンプレートにして複製を簡単にするものです。
詳しくはこちらの記事を参照してください。
これでcapsuleをprefab化できました。
以降はこのprefabしたcapsuleにコンポーネントを追加していきます。
Hierarcyのオブジェクトは削除してください。
手に持てるアイテムにしましょう。
Grabbable Item プレイヤーがオブジェクトを掴んで移動できるようになります。必要なコンポーネントも自動で追加されます。
Colliderがない場合は追加してください。

持ったアイテムを使用すると音が出るようにします。
最初に再生される音を用意します。
フリーで使える音は検索するとたくさん出てきます。
今回はこちらから好きな音を選んで使用してください。
好きな音をダウンロードしたらProjectに追加しておきましょう。
形式はMP3です。

アイテムに次のコンポーネントを追加します。
Use Item Trigger 掴んでいるアイテムに「使う」機能を追加し、使われたことを通知するトリガーです。
Audio Source シーン内でAudioClipを再生します。

Use Item Triggerの設定
TargetはThis、その横にUseと入力します。これはKeyと言ってトリガーとギミックを連携させるための文字列です。好きな文字列でかまいません。
ValueはSignalにしてください。

Audio Sourceの設定
AudioClipには先ほどインポートした効果音ファイルをドラッグ&ドロップしてください。
Outputはそのままでいいです。6つのチェックボックスはすべてなしにしてください。
以下、変更するところだけ書きます。
Volumeは0.1。
Spatial Blendは一番右。
これで持ったときに使うと効果音が出るようになりました。
手放したアイテムが一定時間(ここでは10秒)経つと破壊されるようにします。このギミックが不要な場合は追加しなくてもいいです。
これは以前に紹介したアイテムを元の位置に戻すの応用になります。
途中までは作り方は同じです。
では、以下のコンポーネントを追加してください。
On Release Item Trigger このアイテムが手放された時に通知するトリガーです。
Item Timer 指定時間後にアイテムへメッセージを通知するオペレーションです。
Destroy Item Gimmick アイテムを削除するギミックです。

On Release Item Triggerの設定
TargetはThis、その横にReleaseと入力します。
ValueはSignalにしてください。

Item Timerの設定
TargetはThis、KeyはReleaseです。Keyはトリガーと一致させてください。
Delay Time Secondos 何秒後にギミックに通知するかを設定します。ここでは10とします。
下にある+をクリックしてギミックへの通知を設定します。
Target横にあるKeyにはReleaseONと入力します。
ValueはSignalです。

Destroy Item Gimmickの設定
TargetはThis
KeyはReleaseON
これで持った時に使うと音が出て、手放して10秒経つと破壊されるアイテムのprefabができました!
生成スイッチの作り方
ここからはアイテムを生成するギミックを作っていきます。
スイッチとなるオブジェクトを用意し、コンポーネントを追加してください。
スイッチのアイテム枠線を表示させたくない場合は、オブジェクトの子にコライダーだけのオブジェクトを追加して、そこにコンポーネントを追加してください。
Interact Item Trigger 掴めないアイテムに「使う」機能を追加し、使われたことを通知するトリガーです。Itemも自動で追加されます
Create Item Gimmick アイテムを生成するギミックです。

Interact Item Triggerの設定
TargetはGlobal
その横にある黒い枠はcreateとします。
ValueはSignalにしてください。

Create Item Gimmickの設定
TargetはGlobal、KeyはCreateです。
Item Templateには前項で作成したアイテムのprefabをドラッグ&ドロップします。
Spawn Pointは生成されるアイテムの出現場所です。初めから設定されていますが、位置を変えたい場合はSceneで好きな位置に変更してください。
これでスイッチができました。
ここまで作ったギミックで作動させることができます。
プレビューで確認してみましょう!
破壊スイッチの作り方
前項までのギミックでアイテム生成はできるようになりました。
ただし、スイッチを押すたびに無限に生成されるので生成しすぎると散らかってしまいます。手に持って離すと破壊されるギミックはついているものの全て持って離すのは数が多いと困難になってきます。
そこで、スイッチを押したら生成されたアイテムが1発で全部破壊されるスイッチを作ります。
スイッチとなるオブジェクトを用意しコンポーネントを追加してください。
Interact Item Trigger 掴めないアイテムに「使う」機能を追加し、使われたことを通知するトリガーです。Itemも自動で追加されます

Interact Item Triggerの設定
TargetはGlobal
その横にある黒い枠はdestroyとします。
ValueはSignalにしてください。
アイテムのprefabにコンポーネントを追加します。
Destroy Item Gimmick アイテムを削除するギミックです。

Destroy Item Gimmickの設定
TargetはGlobal
Keyはdestroy
スイッチの作成はこれで終わりです!
生成しすぎたアイテムは破壊スイッチでいつでも破壊することができます!
Set Game Object Active Gimmickとの違い
以前紹介したSet Game Object Active Gimmickは1つのオブジェクトの表示非表示を切り替えることで出たり消えたりを表現できました。
今回作ったギミックではスイッチを押すことで好きな数だけ生成することができます。(ただしprefab化されたアイテムに限る)
生成しすぎたアイテムは勝手には消えないので、破壊するギミックもセットで使うことを推奨します。
食べ物や飲み物、道具などを遊びに来た人数分用意することだって可能です。
破壊するタイミングもここに書いた以外でも自由に設定できます。
使い方は無限大!自由な発想で自分の世界を表現してみましょう!
<<前の記事
オブジェクトがついてくるアイテム
次の記事>>
ローカルスイッチ
