アイテム
アイテムとは
アイテムは空間内の3Dオブジェクトです。アイテムの位置や状態などは基本的に空間内の全員から見て同じです (「同期されている」といいます)。 アイテムに属性を付与することで、掴んで移動したり、座ったり、乗ったりすることができるようになります。トリガー・ギミックやClusterScriptもアイテムを基本要素として動作します。ほとんどのインタラクションは、アイテムと他のアイテム、アイテムとプレイヤーの作用として記述されます。
アイテムの分類
アイテムには二種類あり、特徴が異なります。
- ワールドアイテム
- ワールドの一部としてCreator Kit内で作られた、UnityのGameObjectやprefabがアイテムとして設定されたものです。
- ワールドアイテムは特定のワールドに紐付き、それ以外のワールドで動的生成することはできません。
- アイテムを構成するテクスチャなどのアセットはワールドの景観や他のワールドアイテムと共通で、ワールド読み込み時に読み込まれます。
- クラフトアイテム
- Creator Kitやその他のツールで作られたポータブルなアイテムです。主にワールドクラフトで用いられます。
- クラフトアイテムはより柔軟に動的生成を行うことができ、Unityを使わずにクラフトアイテムを製作することも可能です。
- クラフトアイテムを構成するアセットはクラフトアイテム毎に完結していて、他のアイテムやワールドに対する参照を持ちません。
アイテムテンプレートとアイテムの動的生成
ワールドアイテムは基本的にはCreator Kitで静的に(Unity内でアップロード前に)設置します。 これをワールド設置アイテムと呼びます。一方で、空間インスタンス内で動的にアイテムを生成することもできます。
具体的には以下のような方法です。
このように動的に生成されたアイテムをワールド生成アイテムと呼び、生成時のコピー元になるprefabをワールドアイテムテンプレートと呼びます。
クラフトアイテムもユーザーが手でワールドクラフト内に設置することと、ClusterScriptから動的生成することができます。 しかし、ワールドアイテムと異なり、これら二つはシステム上同様に扱われます。そのため、区別せずにクラフトアイテムと呼びます。 そして、クラフトアイテムの元になるPITMデータ形式のデータはクラフトアイテムテンプレートと呼ばれます。
用語を厳密に区別する必要が無い場所では、以下のような省略がされることが典型的です。
- ワールドアイテムテンプレート → アイテムテンプレート
- クラフトアイテムテンプレート → クラフトアイテム
- アイテムテンプレート → アイテム
- など…
アイテムの設定方法
全てのアイテムには Item コンポーネントが必要です。 さらに他のコンポーネントを追加することで様々な動作を実現できます。
- Movable Item コンポーネント : アイテムが物理やアニメーションなどで動かせます。
- Grabbable Item コンポーネント : プレイヤーがアイテムを掴んで移動できます。
- Character Item コンポーネント : Character Controllerコンポーネントによって移動できます。
- Ridable Item コンポーネント : プレイヤーが乗る(座る)ことができます。
アイテムにより複雑な動作をさせるときも、追加のコンポーネントを使います。
- トリガー・ギミックを使う場合: トリガーコンポーネント で情報を取得し、 ギミックコンポーネント で動作を反映させます。オペレーションコンポーネント で条件分岐などの計算を差し込むことができます。
- ClusterScriptを使う場合: Scriptable Item コンポーネント をつけるとアイテムに対してスクリプトを書けます。