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