Clusterワールドで使う自作アイテムにコライダーを設定する方法

この記事では、自作したアイテムに持てる機能と衝突判定機能(コライダースクリプト)を設定して、Clusterでボールをクラブで打つワールドを作成した。

この記事の参考書籍

はじめに
以前作成した「ball and bar」のワールドボールは、Unityで作成した3Dオブジェクトであったため、初めからColliderは設定されていた。しかし、自作したアイテムをUnityにインポートするとオブジェクトにはメッシュ(外殻)だけしかない。オブジェクト同士を衝突させるためには、自力でCollider(衝突判定機能)を設定する必要がある。
具体的には空のGameObjectにもColliderを設定することができるので、アイテムにコライダーを設定した空オブジェクトの子を着ける。

準備
Clusterワールドにインポートするアイテムとして、Blenderでゴルフクラブ用のアイテムを作成してFBXファイルとしてデスクトップに保存。
このFBXファイルをUnityのClusterCreatorKitにインポートして、Clusterのワールドで使えるようにする。

UnityのClusterワールド起動

デスクトップにクラブのfbxファイルがある状態で、Unity Hubアイコンをクリックして起動。ClusterCreatorKitTemplates-masterをクリック。
Clusterワールドが表示された。

プレーンのワールドを開く
新たなワールドを作成するため、最低限要素3つ入りワールド(plane)を開く。
上部メニューから「File」→「Open Scene」クリック。
”Load Scene”ウィンドウで、以前保存した”plane”ワールドを選択して[開く]クリック。
Planeワールドが開いた。

アイテムをUnityにインポート

Blenderで作成し保存した”club.fbx”ファイルを、デスクトップからUnityのAssetsフォルダ内にドラッグ&ドロップ。

Assetsフォルダ内に”club”ファイルが追加された。
ファイルをクリックすると、いくつかの要素が含まれているのが分かる。

アイテムをSceneビューに追加
次にこの”club”ファイルをAssetsフォルダ内からHierarchyビューにドラッグ&ドロップ。

”club”オブジェクトがHierarchyビューに追加され、Sceneビューにも巨大なシャフトが表示された(Inspectorビューの数値は図のごとく)。でかい!

InspectorビューのScaleを変更して縮小

Rotationも変更して(見やすいように)縦に置いた。

空オブジェクトにコライダー設置

準備
この後、空のオブジェクトにcolliderを付ける(設定する)作業を行うのだが、colliderが見えないと作業ができないので、見えるようにしておく。

外郭表示設定
画面右上にあるGizmos切り換えアイコン(ワイヤーのボールみたいな形)をクリックして有効にしておくと見えるようになる。
この時点ではアイテムの外郭が表示されている。

シャフト用のCollider用の空オブジェクト追加
上部メニューから「GameObject」→「Create Empty」クリック。

HierarchyビューとSceneビューにGameObject(2)という名前の空オブジェクトが作成された。
小さい立方体の外郭が表示された。

オブジェクト名を”shaft collider”に変更し、InspectorビューのPositionを変更して見やすい位置(空中)に移動。
Scaleもシャフトの大きさに合わせる

空オブジェクトにコライダーを設定

Inspectorビューの[Add Component]ボタンをクリックして、”Box Collider”を選択。

Box Colliderが設定されると、Sceneビュー上でColliderの輪郭(赤色枠)が表示される。

コライダーの位置調整

視点を横方向に変更。シャフト方向に伸びたColliderの輪郭が良くわかる。

真横のビューにして、shaft colliderをクラブのシャフトの位置に合うように移動する。

真縦のビューにして、更にColliderを移動させて合わせる。シャフトのcolliderはこれで良し。

2つ目のコライダーを作成

次はフェイス部のColliderを設定する。

空オブジェクト作成
上部メニューから「GameObject」→「Create Empty」クリック。

HierarchyビューとSceneビューにGameObject(2)という名前の空オブジェクトが追加された(さっきと一緒)。

先程同様、オブジェクト名を変更(face collider)し、Positionで位置を変更。

コライダー付与
[Add Component]ボタンをクリックして、Box Colliderを設定。

SceneビューでCollider輪郭が表示されている。
横からのビューに視点を変更し、Colliderの大きさを、クラブのフェイス部に合うようにScale値を変更する。

コライダーの位置・向きの調整
shaft colliderと同様に、真横のビューに視点変更して、face colliderの位置を移動する。
[回転]アイコンとクリックしてcolliderの向きも変える(回す)。

真縦の視点にして、同様にface colliderの位置を移動。

face colliderの角度については、フェイス部の向きに沿った(平行な)ビューになるように視点を変更して、[回転]アイコンをクリック後、3軸の方向に回転しながら合わせた。

ビューを変えて、更に[移動]と[回転]で微調整。

最終的に、3方向からのface collierの位置と回転は、図のように設定した。

グリップ作成(ColliderとGrabbable Item付き)

次はグリップのオブジェクトを作成し、colliderと持てる機能を設置する。

空オブジェクト作成
前2回と同様、上部メニューから「GameObject」→「Create Empty」クリック。

コライダー設定
新しい空オブジェクトに、”grip”と命名し、位置を変えて、[Add Component」ボタンから「Box Collider」選択。

Scaleでサイズも変更。Colliderの輪郭が表示された。

コライダーの位置調整
真横・真縦の視点で、[移動]によって、”grip”colliderの位置をクラブのグリップ部に合わせる。

”grip”オブジェクトにはcolliderとしての機能だけではなく、クラブの把持部としての機能も設定する。
そのためには”クラブ”オブジェクトに持てる機能(Grabbable Item)を設定して、そのスクリプトの”Grip”に把持部オブジェクトを指定する必要がある。

Grabbable Item設定
まず、クラブに持てる機能を設定する。
Hierarchyビューで”club”を選択。Inspectorビューの[Add Component]ボタンをクリック。検索結果から”Grabbable Item”を選択。

”club”オブジェクトのInspectorビューに”Movable Item(Script)”と”Grabbable Item(Script)”が追加された。

空オブジェクト(grip)をアイテム(クラブ)の”子”にする
Hierarchyビューで、”grip”(と、”shaft collider”と”face collider”もついでに)を”club”表示上にドラッグ&ドロップ。
すると、すべてが”club”オブジェクトの下層に表示された(親子関係となった)。

空オブジェクトをアイテムのGripに指定
”子”とした”grip”オブジェクトを、”club”Inspectorビューの「Grabbable Item(Script)」の”Grip”指定ボックス内にドラッグ&ドロップ。

Grabbable ItemスクリプトのGripに、”grip”オブジェクトが指定された。
これでクラブのCollider設定はとりあえず完了したので、チェックする。

ワールド再生でクラブの確認

画面上部の[▶](再生)ボタンをクリックして、Gameビュー開始。

落ちているクラブを指定してクリックすると、クラブが持たれた。
しかし、この角度ではボールを打てないな。一度停止([▶]クリック)。

グリップオブジェクトを軸回転
”grip”オブジェクトをZを軸に-90度回転させる(持ち位置を回す感じ)。

そして再生([▶」)。
クラブを床から拾うと、クラブのフェイス面が左を向いた状態で持たれた。
なるほど。こうやって(GripオブジェクトのRotation変更)持ち方を設定するのか。

クラブの設定は一先ず完了。

ボール追加

次はボールの制作。と言っても、難しくはない。
上部メニューから「GameObject」→「3D Object」→「Sphere]クリック。
Sceneビューに巨大な球が追加された。

InspectorビューのPosition, Scaleの数値を変更して、球の位置と大きさを調整。

ボールにスクリプト・マテリアル設定
ボールにするには、球を動かせる物体にして色を付ける必要がある。
Inspectorビューの[Add Component]から”Movable Item”を選択して設置。
Assetsフォルダ内にある青色マテリアル(以前作成したもの)を、(Inspectorビューの)Default-Material部(マテリアルのエリア)にドラッグ&ドロップして変更する。

Gameビュー再生

クラブとボールが完成したので、[▶](再生)ボタンをクリックして、Gameビューを開始。

クラブを持って、フェイス部をボールに当てると、ボールは転がって床から落ちた。
成功かな。

Clusterにアップロードするためのアイキャッチ画像をスクリーンショットから作成・デスクトップに保存して、今回は終了。

次回は、このクラブとボールのワールドをClusterにアップロードして、MetaQuestで本当にクラブでボールが打てるのかどうか検証する。

参考書籍

タイトルとURLをコピーしました