演習 - ObjectManipulator を使用して手による操作を追加する
ObjectManipulator スクリプトは、手とモーション コントローラーの入力モデルの 直接操作 モダリティをサポートします。 スクリプトがオブジェクトにアタッチされている場合、ユーザーはオブジェクトを手で移動、拡大縮小、または回転できます。 この演習では、2 つの立方体を作成して、必要なスクリプトをアタッチし、立方体を動かします。
1 つ目の立方体を追加して調整する
メニュー バーで、 GameObject>3D オブジェクト>Cube を選択します。
キューブの既定のサイズは 1 立方メートルで、ここでは大きすぎます。 サイズを 20 立方センチメートルに縮小します。
キューブを選択し、[インスペクター] で、[変換] セクションのキューブの [スケール] の値を次のように変更します。
X = 0.2、Y = 0.2、Z = 0.2
立方体は、シーンの既定の位置 (0,0,0) に配置されました。 これは、立方体がユーザーのヘッドセットと同じ位置にあることを意味します。ユーザーは後方に移動するまで立方体を見ることができません。 見やすい位置になるように、立方体の位置の値を変更します。
インスペクターで、[変換] セクションのキューブの Position 値を次のように変更します。
X = -0.2、Y = 1.6、Z = 0.5
立方体の 3 つの側面が見えるようにしたいので、立方体の回転も変更します。
インスペクターで、[変換] セクションのキューブの [回転] の値を次のように変更します。
X = 9、Y = 14、Z = 0
ヒント
キューブを拡大するには、キューブを選択し、カーソルが [シーン ] ウィンドウの上に置いていることを確認し、 F キーを押します。 この方法で、任意のオブジェクトを拡大できます。
スクリプトを立方体に追加する
追跡対象の手でオブジェクトを "グラブ可能" にするには、次の 3 つのコンポーネントがアタッチされている必要があります。
- Collider コンポーネント (ここでは何もする必要はなく、Unity の立方体には既定で [ボックス コライダー] が既にあります)
- オブジェクト マニピュレーター (スクリプト) コンポーネント
- 制約マネージャー (スクリプト) コンポーネント
キューブを選択したまま 、[インスペクター] ウィンドウで [ コンポーネントの追加 ] ボタンを選択し、 オブジェクト マニピュレータ ー スクリプトを検索して選択します。
オブジェクト マニピュレーター スクリプトは、1 つまたは 2 つの手を使用してオブジェクトを移動可能、スケーラブル、回転可能にします。 オブジェクト マニピュレーター スクリプトを追加すると、制約マネージャー スクリプトも自動的に追加されます。これは、オブジェクト マニピュレーター スクリプトがそれに依存しているからです。
キューブの素材を更新する
パフォーマンス上の理由から、既定の Unity 素材ではなく MRTK 素材を使用することをお勧めします。
- キューブを選択したまま、メッシュ レンダラー コンポーネントの [マテリアル ] セクションを見つけて展開します。
- 既定のマテリアルを MRTK 標準アセット>の下にあるMRTK_Standard_Whiteマテリアルに置き換えます。 これを行うには、[マテリアル]セクションの[要素]フィールドにマテリアルを直接ドラッグします。
2 つ目の立方体を追加する
[階層] で、キューブを右クリックし、[複製] を選択します。 重複したキューブは、 キューブ (1) という名前で表示されます。
元のキューブを右クリックし、[ 名前の変更] を選択し、キューブに Near Cube という名前を付けます。
複製したキューブを右クリックし、[ 名前の変更] を選択し、キューブに Far Cube という名前を付けます。
現時点では、 シーン ビューにはキューブが 1 つしかないように見えます。 これは、近くの立方体と遠くの立方体がまったく同じ場所にあるからです。 遠くの立方体の位置と回転を変更しましょう。
Far Cube を選択したまま、 Transform コンポーネントの値を次のように変更します。
位置: X = 0.6、Y = 1.6、Z = 1.1
回転: X = 27、Y = 0、Z = 0
カメラの左側に近くのキューブ、右に少し離れた位置に遠くのキューブが見えるはずです。 これを確認するには、階層でメイン カメラ (MRTK XR リグ>カメラ オフセット) を選択し、[シーン] ウィンドウのメイン カメラ ウィンドウを確認します。
ヒント
[シーン] ウィンドウのビューをカメラが見ているような外観にする場合は、[シーン] ウィンドウ内をスクロールします。 デフォルトでない場合、カメラの クリア フラグ を Skybox に設定する必要がある場合があります。
再生モードで立方体をつかんで動かす
[再生] ボタンを選択します。 プロジェクトの再生が開始されると、ビューが ゲーム ウィンドウに切り替わります。
注
再生する前に、プロジェクト設定>の下に有効なプロファイルセットがあることを確認します。
[ゲーム] ウィンドウの右上隅にある 3 点ボタンを選択し、[最大化] を選択します。
スペース バーを長押しして、シミュレートされた右側がビューに表示されるようにします。
立方体の側面または底面に触れるまで、シミュレートされた手を近くの立方体に近づけていきます。
マウスの 左ボタン をクリックし (これにより、手がキューブを "グラブ" し、シーンの周りにキューブをドラッグします。
遠くの立方体をつかんで動かすには、シミュレートされた手にアタッチされている far ポインターを使用します。
必要に応じて、もう一度 スペース バー を長押しして、シミュレートされた右側を表示します。 手の人さし指の先から伸びる far ポインターに注目します。
立方体にポインターの先端が触れるまで、手を遠くの立方体に近づけていきます。 ポインターの先端を立方体に触れさせるには、何度か円を描くように手を動かす必要がある場合があります。
マウスの左ボタンをクリックすると(これにより手が閉じて、ピンチジェスチャと呼ばれる動作を行います)、キューブをシーン内でドラッグします。
