今回の記事では、自作した3DオブジェクトをClusterのアバターが持てるようにする方法を説明する。Unity上で3Dモデルのサイズを持てる大きさに調整し、さらにスクリプトで持てる機能を設置した後、Clusterにアップロードして完成。
前回、トロフィーモデルを作成して、Clusterアイテムとしてアップロードすることができた。しかしこのオブジェクトは大きさは1m四方と大きく、しかも持つことのできない置物であった。
詳細は以下を参照。
トロフィーは装飾品でもあるが、本来は持つ物である。
今回は、アイテムの大きさを調整、さらにアバターが持つことができるアイテムとして作成し、アップロードまで行う。
Grabbable Item
Clusterのクリエイターズガイドを見ると、持てるアイテムにするために”Grabbable Item”というスクリプトを追加することが必要とされている。
Unity起動 オブジェクト準備
いつもの通り、デスクトップのUnity Hubアイコンをクリック。
ProjectsウィンドウのClusterCreatorKitTemplates-masterをクリックしてUnity起動。
Unity画面が開く。
前回アイテム登録した”trophy10”を持てるアイテムにする。
Assetsフォルダ内の”trophy01”を、Hierarchyビューにドラッグ&ドロップ。
Sceneビューにオブジェクトが表示された。
Inspectorビューで詳細を確認すると、オブジェクトのScaleはX・Y・Zのすべてが1(m)。
この大きさでは持つアイテムとしては巨大過ぎる。
オブジェクトのサイズ調整と空オブジェクト追加
サイズ調整
オブジェクトが大きいので、サイズを30%に縮小する。
InspectorビューのScaleをX・Y・Zすべて0.3に変更する。
Sceneビューのオブジェクトは小さくなった。
空オブジェクトの子とする
アイテムとするオブジェクトは、空のオブジェクトの”子”として編集する必要があるので、まず空オブジェクト作成(前回同様)。
上部メニューから「GameObject」→「Create Empty」クリック。
GameObject(2)が作成される(Hierarchyビューで確認)。
前回同様に、作成された空オブジェクトは空中に浮いている(Sceneビューでも、InspectorビューのPositionでも)。
InspectorビューのPositionを(X,Y,Z)=(0,0,0)に変更し、アイテムオブジェクトの原点に合わせる.
次に、アイテムオブジェクトを空オブジェクトの”子”にする。
Hierarchyビューで、”trophy10”を”GameObject(2)”にドラッグ&ドロップ。
GameObject(2)の下層にアイテムオブジェクトが設置された(”子”になった)。
持てるスクリプト追加 途中で失敗2回
持てるスクリプト(Grabbable Itemスクリプト)追加
ここから、アイテムに持てる機能を追加する。
親オブジェクト(GameObject(2))を選択。
Inspectorビューの[Add Component]ボタンをクリック。
Searchバーで検索して”Grabbable Item”を選択してクリック。
GameObject(2)のInspectorビューにいくつかの項目(Script)が追加された。
この中で知っているのは”Item(Script)”と”Grabbable Item(Script)”だけ。
Itemサイズ設定
Item(Script)の大きさは設定する必要がある。
[Set Default Size]ボタンをクリック。
自動設定の確認ウィンドウが表示されるので[OK]クリック。
しかし、SizeはX0,Y0,Z0のまま変わらなかった(これが後の失敗の原因となった)。
ここからしばらく失敗編となる(赤マーカー表示部分)
アイテムをPrefab化
アイテムをアップロードできるようにするためには、Prefab化しなければならない。
方法は簡単!
Hierarchyビューの”GameObject(2)”(親オブジェクト)をProjectビューのAssetsフォルダ内へドラッグ&ドロップ。
Assetsフォルダ内にPrefab化されたファイル(GameObject(2)(prefab Asset))が追加され、HierarchyビューのGameObject(2)の前に表示された立方体は着色された(Prefab化成功の合図)。
一応アップロードの準備ができたので、アップロード操作。
上部メニューから「Cluster」→「クラフトアイテムアップロード」クリック。
クラフトアイテムアップロードウィンドウが開く。
作成したPrefabファイル(GameObject(2))をAssetsフォルダ内からクラフトアイテムアップロードウィンドウにドラッグ&ドロップ。
クラフトアイテムアップロードウィンドウ内に“×”が表示された。
この×の項目に「Prefab読み込み時に例外が発生しました。詳細はConsoleを確認してください。」とのコメントあり。
Consoleって何?と思ったら、画面左下に赤字でコメント(!MissingComponentException: GrabbableItem and RidableItem require Collider)が表示されていた。
コメントをクリックすると詳細が表示された。これがConsoleだな。
つまりColliderがついてないから“×”ということみたいだ(これが失敗の原因だった)。
とういことで、ここから本編に戻って問題解決する。
Colliderを設置する
持てるアイテムにするには、さらに“子”オブジェクトにColliderを付ける必要がある。
Hierarhcyビューで子オブジェクトである“trophy10”をクリックして選択。
Inspectorビューで「Add Component」ボタンをクリック。
Searchバーで“collider”と入力すると候補が表示される。
“Box Collider”を選択した。
Inspectorビューで“Box Collider”が追加された。
ここからまた失敗編が始まる(今度は青色マーカー部分)。
オブジェクトをPrefab化
アイテムをアップロードできるようにするためには、Prefab化しなければならない。
方法は簡単!
Prefab化するため、GameObject(2)をHierarchyビューからProjectビューAssetsフォルダ内にドラッグ&ドロップ。
同名のPrefabファイルが先に存在する場合(今回はそうなってしまった)、original Prefabを作るか、Prefabのvariantを作るかを選択するウィンドウが開く。
[Prefab Variant]ボタンをクリック。
Assetsフォルダ内に別ファイルが追加された(つまりPrefabファイルは2個になった)。
作成されたファイルをクリックしてInspectorビューを見ると、ファイル名は”GameObject(2)Variant(Prefab Asset)”であった。
アップロード試みるも・・・・
上部メニューから「Cluster」→「クラフトアイテムアップロード」クリック。
クラフトアイテムアップロードウィンドウが開くので、新たに作成したPrefabファイルをAssetsフォルダ内からアップロードウィンドウにドラッグ&ドロップ。
失敗!
アップロードウィンドウ内に、また”×”の表示。
アイテムの外観、0×0×0、とコメントが表示されている。さっきよりは進んだ?
コメントには、Itemの名前を入力することと、ItemSizeは1以上とすること、と記載されている。
これが失敗の原因か。
Hierarchyビューで”GameObject(2)”をクリックして選択。
InspectorビューのItem(Script)を見る。
確かに、Nameは未入力で、Sizeは0,0,0だ。
ここからまた本編にもどって、問題を解決する。
Item名とItemサイズを入力
InspectorビューのItem(Script)の、ItemNameを入力し、SizeをX 1, Y 1, Z 1と入力。
アイテムオブジェクトを包むように黄色の立方体が表示された。
オブジェクトをPrefab化
アイテムをアップロードできるようにするためには、Prefab化しなければならない。
方法は簡単!
Prefab化するため、GameObject(2)をHierarchyビューからProjectビューAssetsフォルダ内にドラッグ&ドロップ。
同名のPrefabファイルが先に存在する場合、original Prefabを作るか、Prefabのvariantを作るかを選択するウィンドウが開く。
[Prefab Variant]ボタンをクリックすると、Assetsフォルダ内に新しいPrefebファイルが追加された。
このファイルの名前は”GameObject(2) Variant 1 (Prefab Asset)”であった(Inspectorビューで確認)。
Clusterにアップロード
アイテムのアップロード可否の確認
上部メニューから「Cluster」→「クラフトアイテムアップロード」クリック。
クラフトアイテムアップロードウィンドウが開くので、新しいPrefabファイルを、Assetsフォルダ内からアップロードウィンドウ内にドラッグ&ドロップ。
成功!!
アップロードウィンドウに、アイテム外観、アイテム名(trophy10)、サイズ(1×1×1)と「正常なアイテムです。」のコメントが表示された。
Clusterにアップロード
ウィンドウの下にある[アップロード]ボタンをクリック。
アイテムアップロードが実行されて完了。
[閉じる]ボタンをクリック。
Clusterのマイコンテンツページが自動的に表示される。
作成したアイテム(trophy10)がアップロードされている。
アップロードが確認できたのでネットページは閉じる。
アイテムが持てるかどうかの確認
アイテムが本当に持てるアイテムとなっているのか確認する。
Unity画面に戻り、上部にある再生ボタン([▶])をクリック。
Gameシーンとなり、上下左右キーでシーン内を移動できる。
床に落ちているトロフィーに近づくと、アイテム周囲が青く光る。
左クリックすると、その状態で持ち上がる(持てた!)。
[Q]キーを押すとアイテムは離される。離されると床に落ちる。
キーが反応しないときにはロックされている。[Esc]キーでロック解除。
アイテムが下向きに床に落ちている場合には、持ち上げた時にも下向きのまま。
アイテムは持てることが確認できたので、[▶]をクリックして、停止・終了。
持てるアイテムを作ることができて、アップロードもできたので今回は完了。
終了
上部メニューから「File」→「Exit」クリック。
保存を促されるので[Save]クリック。
Unity HubのProjects画面となり終了。
今回、作成した3Dモデルの大きさを調節し、かつ持てる機能を追加して、アップロードすることができた。