この記事では、Unity上で棒でボールを打つClusterワールドを作成する。Clusterワールドに必須の3要素のみ存在するプレーンワールドを作成した後、そのワールドにボールと棒のオブジェクトを作成。オブジェクトにScriptでそれぞれの機能を追加。ワールドを再生。棒がボールに当たるとボールは転がった。
Cluster用のプレーンワールドを作成
Unity上でボールと棒が設置されたワールドを作成するために、まずはClusterに必要な3要素があるだけのプレーンのワールドを作成する。
UnityHubを起動して、ClusterCreatorKitTemplate-masterを開始する。
以前に作成したオブジェクトが設置されているだけのワールドが表示された。
ワールドをプレーン(無)にしたいので、現在設置されているトロフィー(の親オブジェクト)を選択。右クリックメニューから「Delete」クリックして削除する。
これで、必要3要素だけのワールド(プレーンワールド)になったので、今後のために保存しておく。
上部メニューから「File」→「Save As」をクリック。
ファイル名(plane)を入力して[保存]ボタンをクリック。
これから作っていくNewWorldは、このファイル(plane)から作成していくと簡単なのかも。
いよいよ今回のワールドを作成する。
ボール作成
はじめに“ボール”を設置する。
上部メニューから「GameObject」→「3D Object」→「Sphere」をクリック。
Hierarchyビューに“Sphere”が、Sceneビューにオブジェクトが追加された。
Inspectorビューはこんな感じ。
オブジェクトの名称を“ball”に変更。
ボール位置変更
ボールの位置が床よりも下にあるようで見えない。
InspectorのPositionを変更すると見えるようになった。
サイズ変更
大きさを縮小(Scale値を減少)した。
マテリアル設定
以前に作成した青色マテリアルをProjectビューから、Sceneビューのオブジェクト上にドラッグ&ドロップするとInspectorビューにマテリアルが追加されて、オブジェクトも着色された。
Planeワールドとは別のものとするために、ここで一度このワールドを保存。
上部メニューの「File」→「Save As」クリック。
ファイル名を“ball and bar”と入力して[保存]ボタンをクリックして保存した。
棒を追加
続いて“棒”をワールドに設置する。
上部メニューから「GameObject」→「3D Object」→「Cylinder」をクリック。
Hierarchyビューに“Cylinder”、Sceneビューにはオブジェクトが追加された。
Inspectorビューはこんな感じ
棒の位置・サイズ変更
ボールと同様に棒も床下に隠されており見えない。
オブジェクト名を“bar”に変更し、InspectorのPositionとScaleを変更。
マテリアル設定
こちらは茶色のマテリアルをドラッグ&ドロップして着色した。
更にスケール調節
Scaleを再調節して長細い形状にした。
ボールに動かせる機能、棒に持てる機能を設定
必要なオブジェクトは設置できたので、これらに機能を設定していく。
ボールに動かせる機能設定
ボールオブジェクトを選択して、Inspectorの[Add Component]ボタンをクリック。
検索バーから「Movable Item」スクリプトを選択して設定する。
ボールオブジェクトのInspectorに、“Item(Script)”、“Rigidbody”、“Movable Item(Script)”が追加された。
このスクリプトの意味は、ボールを、動かせる・重さのある・実体にする、ということ。
棒に持てる機能を設定
次は棒に機能を設定する。
“bar”を選択、Inspectorビューで[Add Component]ボタンをクリック。
検索バーで“Grabbable Item”を選択して、設定する。
Inspecorビューで、“Item(Script)”、“Rigidbody”、“Movable Item(Script)”、“Grabbable Item(Script)”が追加されている。
これらのスクリプトにより、棒は、動かせる・持てる・重さのある・実体となった。
ワールド再生してオブジェクトの挙動を確認
画面上部中央の[▶](再生)ボタンでGameビュー開始。
ボールと棒のあるワールドが表示された。
棒に近づくと棒が青く縁どられる。
左クリックで棒をもつ。
[Q]ボタンを押すと棒が離されて倒れる。
倒れた棒が転がってボールに当たると、ボールも共に転がっていった。
予定通り、衝突で動かせている!
棒でボールを打ってみる
今度は棒を持って、下を向いて、棒の先でボールを突くと、ボールは転がって行って、床の端から落ちた。
違う角度からも確認。ボールを突くと、ボールは転がって床から落ちた。
もう一度[▶]ボタンを押して、Gameビュー停止してSceneビューに戻る。
棒が縦にあると持ちにくかったので、“bar”のRotationを変更して、横向きに設置した。
もう一度[▶]ボタンでGameビュー開始して、棒とボールの挙動を確認。大丈夫。
ワールド完成。
ワールドアップロード用画像作成
次回のワールドアップロード登録用に、アイキャッチ画像を作成してデスクトップに置いておく。
Unityでのワールドは完成したので、今回は終了。
設置したボールと棒の両方に、予定していた物理法則は設定できているはず。
次回はこのワールドをアップロードして、MetaQuest2での挙動を確認する。