持てるアイテムを制作する過程で、アイテムを落下させると、横向きに倒れてしまい、その後に立たせた状態に戻すことが非常に困難となることが気になった。今回は、アイテムにGrip位置を設定することで、この問題を解決した。
準備
Unity HubからClusterCreatorKitTemplate-master起動。
Sceneビューに作成した持てるアイテムが表示された(GameObject(2)が親オブジェクト)。
![](https://nahbun50.com/wp-content/uploads/2023/01/795316b92fc766b0181f6fef074f03fa-1-800x287.png)
はじめの状態を確認
画面中央の再生ボタン([▶])をクリックしてGameビュー開始。
![](https://nahbun50.com/wp-content/uploads/2023/01/94ed160662be198949535a112047e9b4-1-500x399.png)
置いてあるアイテムの上部にポインターを合わせてクリックするとアイテム上部がビュー下部に、アイテムの中央にポインターを合わせてクリックするとアイテム中央がビュー下部となって表示された。
つまり、クリックしたときのマウスポインターの位置でアイテムを持ちあげる、ということ。
![](https://nahbun50.com/wp-content/uploads/2023/01/f4a1b0aed5dc02442c433030ff24c031-1-500x391.png)
離してみる
次に、アイテムを持った状態で、マウスを上に移動させることで視点を床方法に移動させて(つまり下を向いて)[Q]ボタン押してアイテムを離すと、アイテムは逆向きにひっくり返って床に置かれた。
![](https://nahbun50.com/wp-content/uploads/2023/01/8aa09ea6d7822fbb10331635d428d488-1-800x183.png)
再度持ち上げてみる
倒れたアイテムは、どの位置にポインターを合わせても、クリックして持ち上げると、置かれた状態の向きで持つ。この状態で[Q]ボタン押して落下させても、そのままの向きかランダムで変更するかなので、一度横向きに倒れたアイテムをその後正しく立った向きに戻すことは非常に難しい。
上下の向きが無いアイテム(石とか)であれば、これでも良さそうだが、上下の向きがあるアイテムではこれでは困る。
![](https://nahbun50.com/wp-content/uploads/2023/01/f36fc0458607842cbf0775516687491b-1-800x420.png)
アイテムにグリップ位置を設定する
倒れたアイテムを再び立てて置く1つの方法として、アイテムに握る部分(Grip位置)を設定する。
Grip位置用オブジェクト作成
Grip位置を設定するためには、それ用のオブジェクトを作成する必要がある。
画面上部メニューの「GameObject」→「Create Empty」クリック。
![](https://nahbun50.com/wp-content/uploads/2023/01/e99cc3808964d9e08ec8fb27d43842de-1-800x311.png)
Hierarhcyビューで“GameObject(2)”(trophyの親オブジェクト)と同じ階層に“GameObject(3)”が作成される。
このオブジェクトの位置は、Inspectorビューで、PostionはX:0, Y:0.3, Z:1となっている。GameObject(2)と同じ位置のやや宙に浮いている位置だ(Sceneビューでも、その位置に□が表示されている)。
Gripオブジェクトを親オブジェクトの子にする
はじめにGrip位置として作成した“GameObject(3)”を“GameObject(2)”の子とする。
つまり、アイテムとグリップは同じ階層に配置される。
Hierarhcyビューの“GameObject(3)”を“GameObject(2)”の上にドラッグ&ドロップする(青矢印)。
![](https://nahbun50.com/wp-content/uploads/2023/01/b1db37a1df6c6332fc8bdf704e9d1e49-1-800x370.png)
Hierarhcyビューを見ると“GameObject(3)”が“GameObject(2)”の下層に設置されている。
同時にInspectorビューでPostionのZ値が先ほどより“1”少なくなっている(1.0108→0.0108)。
これは、Gripオブジェクトの基準(0)が“GameObject(2)”の位置になったということ。
![](https://nahbun50.com/wp-content/uploads/2023/01/1249f2682be7181f6a6266c99ee5cae6-1-800x415.png)
(GameObject(3)のPositionが中途半端な数値となっているので)PositionをX:0, Y:0, Z:0に変更した(つまりtrophy10の原点と同じ位置にしたということ)。
そして、このオブジェクト位置がGrip位置、つまりこのトロフィーをつかむ位置になる。
![](https://nahbun50.com/wp-content/uploads/2023/01/ad328257df3c27d0237be29c2f1fd87c-1-800x353.png)
Grip位置として指定する
次は親オブジェクトのGrip位置に“GameObject(3)”を指定する。
はじめにHierarhcyビューで“GameObject(2)”つまり親オブジェクトを選択する。
表示されたInspectorビューにある“Grabbable Item (Script)”項目の、Gripの右にある欄(デフォルトではNone(Transform)と表示されている)に、Hierarhcyビューの“GameObject(3)”をドラッグ&ドロップする(青矢印)。
![](https://nahbun50.com/wp-content/uploads/2023/01/90b0dfa136419ccc91fda6fec27764ca-1-800x409.png)
“GameObject(2)”のInspectorビュー のGrabbable ItemのGrip欄に“GameObject(3)”が設定される。
Sceneビューの“GameObject(3)”の立方体が黄緑色に変化した。
この黄緑オブジェクト部分でトロフィーを持つように設定された。
もし違う箇所でGripしたい場合には、GameObject(3)の位置を変更すればよい(今回は行わないが)。
![](https://nahbun50.com/wp-content/uploads/2023/01/571a82aa9fa95e9dd03f724dc3a94890-500x437.png)
グリップ設定の確認
設定の成功を確認するため、再生ボタン([▶])をクリックして、Gameビューを起動する。
![](https://nahbun50.com/wp-content/uploads/2023/01/1229c317e01c766a53c2709efe066b18-500x350.png)
アイテムは立った状態で表示される。
ポインターを合わせてクリックすると、アイテムの下部がビュー下部として表示される(ここで持っているという表現)。
視点を床方向にうつして(マウスを上に移動)、[Q]ボタンを押して離すと、アイテムは横向きに倒れて床に置かれた。
![](https://nahbun50.com/wp-content/uploads/2023/01/085f435ecdb57e7076774ccbc381f72e-500x332.png)
横向きに倒れているアイテムにポインターを合わせ、クリックしてアイテムを持つ。
まっすぐの向きでアイテムが持たれた。
そして、視点を上にあげて(マウスを下に移動)、前方を向いた状態で[Q]ボタンを押してアイテムを落下させると、まっすぐにアイテムは落下し、床に立った状態で置かれた。
その後、「倒れた状態」→「持つ」→「前方を向く」→「離す」を繰り返してみたが、ちゃんと立った状態で床に置けた。
目標達成。
![](https://nahbun50.com/wp-content/uploads/2023/01/88ed93005e0cb97394dcb2f41037a9e6-500x317.png)
Grip位置設定アイテムのアップロード
この設定のアイテムとしてClusterにアップロードできるのかを確認する。
アイテムのPrefab化
“GameObject(2)”(すべての親オブジェクト)をPrefab化するため、Hierarhcyビューの“GameObject(2)”をAssetsフォルダ内にドラッグ&ドロップ。
PrefabをOriginalとするかVariantとするのかの選択ウィンドウが表示されるので[Prefab Variant]ボタンをクリック(これは以前と同じ)。
![](https://nahbun50.com/wp-content/uploads/2023/01/485aac62cea3d548d1555ce3bfa037e6-800x464.png)
ProjectビューのAssetsフォルダ内に新たなオブジェクトが追加される。
この新Prefabオブジェクトを選択すると、Inspectorビューに名称「GameObject(2) Variant 2」が表示される。
![](https://nahbun50.com/wp-content/uploads/2023/01/aeb80bad1055d60bd4b8dc8204f77f1c-800x425.png)
アップロード
上部メニューの「Cluster」→「クラフトアイテムアップロード」クリック。
![](https://nahbun50.com/wp-content/uploads/2023/01/51e8fc29fa61692e70bc4c925b602ad0-800x306.png)
クラフトアイテムアップロードウィンドウが表示される(赤枠)。
新PrefabオブジェクトをAssetsフォルダ内からクラフトアイテムアップロードウィンドウ内にドラッグ&ドロップ(青矢印)。
![](https://nahbun50.com/wp-content/uploads/2023/01/4b820548ffdca22d08fbb3ba51ee22f3-800x482.png)
アップロードウィンドウ内にアイテムが表示されて、“正常なアイテムです。”と表示された。
あとは下にある[アップロード]ボタンをクリックするとClusterにアップロードできる。
![](https://nahbun50.com/wp-content/uploads/2023/01/92d57db0790a5fa5b8a0cc20858a9366-500x449.png)
今回の作業は以上で終了(アップロード詳細は以下を参照してください)。
保存・終了
いつものように、上部メニュー「File」→「Exit」クリック。
保存警告ウィンドウで[Save]クリックしてUnity Hubに戻って終了。
![](https://nahbun50.com/wp-content/uploads/2023/01/c2dda1d20b57ad8d0298a15686591503-800x422.png)
今回は、アイテムに持つ場所(Grip位置)を設定することが出来た。