演習 - ObjectManipulator を使用して手による操作を追加する

完了

ObjectManipulator スクリプトでは、手とモーション コントローラー入力モデルの "直接操作" モダリティがサポートされています。 このスクリプトをオブジェクトにアタッチすると、ユーザーは手を使ってオブジェクトを移動、拡大縮小、回転させることができます。 この演習では、2 つの立方体を作成して、必要なスクリプトをアタッチし、立方体を動かします。

1 つ目の立方体を追加して調整する

  1. メニュー バーで、GameObject>[3D オブジェクト]>[立方体] を選択します。

    Screenshot of menu commands for adding the cube.

    立方体の既定のサイズは 1 立方メートルで、ここでは大きすぎます。 サイズを 20 立方センチメートルに縮小します。

  2. 立方体を選択し、[インスペクター] で、[変換] セクションの立方体の [スケール] の値を次のように変更します。

    X = 0.2、Y = 0.2、Z = 0.2

    立方体は、シーンの既定の位置 (0,0,0) に配置されました。 これは、立方体がユーザーのヘッドセットと同じ位置にあることを意味します。ユーザーは後方に移動するまで立方体を見ることができません。 見やすい位置になるように、立方体の位置の値を変更します。

  3. [インスペクター] で、[変換] セクションの立方体の [位置] の値を次のように変更します。

    X = -0.2、Y = 1.6、Z = 0.5

    Screenshot of the cube's transform component after updates.

    立方体の 3 つの側面が見えるようにしたいので、立方体の回転も変更します。

  4. [インスペクター] で、[変換] セクションの立方体の [回転] の値を次のように変更します。

    X = 9、Y = 14、Z = 0

    ヒント

    立方体を拡大するには、立方体を選択し、[シーン] ウィンドウの上にカーソルがあることを確認して、F キーを押します。 この方法で、任意のオブジェクトを拡大できます。

スクリプトを立方体に追加する

追跡対象の手でオブジェクトを "つかめる" ようにするには、3 つのコンポーネントをアタッチする必要があります。

  • Collider コンポーネント (ここでは何もする必要はなく、Unity の立方体には既定で [ボックス コライダー] が既にあります)
  • Object Manipulator (スクリプト) コンポーネント
  • Constraint Manager (スクリプト) コンポーネント
  1. 立方体を選択したまま、[インスペクター] ウィンドウで、[コンポーネントの追加] ボタンを選択し、オブジェクト マニピュレーター スクリプトを検索して選択します。

    Screenshot of adding the Object Manipulator script.

    Object Manipulator スクリプトを使用すると、片手または両手を使ってオブジェクトを移動、拡大縮小、回転させることができます。 オブジェクト マニピュレーター スクリプトを追加すると、制約マネージャー スクリプトも自動的に追加されます。これは、オブジェクト マニピュレーター スクリプトがそれに依存しているからです。

    Screenshot of the Constraint Manager script added to the cube.

キューブの素材を更新する

パフォーマンス上の理由から、既定の Unity 素材ではなく MRTK 素材を使用することをお勧めします。

  1. 立方体を選択したまま、Mesh Renderer コンポーネントの [素材] セクションを見つけて展開します。
  2. 既定の素材を、[MRTK 標準アセット]>[素材] の下にある [MRTK_Standard_White] 素材に置き換えます。 これを行うには、[素材] セクションの [要素] フィールドに素材を直接ドラッグします

2 つ目の立方体を追加する

  1. [階層] で、立方体を右クリックし、[複製] を選択します。 複製した立方体が Cube (1) という名前で表示されます。

  2. 元の立方体を右クリックし、[名前の変更] を選択して、この立方体に ''近くの立方体'' という名前を付けます。

  3. 複製した立方体を右クリックし、[名前の変更] を選択して、この立方体に ''遠くの立方体'' という名前を付けます。

    現時点では、[シーン] ビューにある立方体は 1 つだけのように見えます。 これは、近くの立方体と遠くの立方体がまったく同じ場所にあるからです。 遠くの立方体の位置と回転を変更しましょう。

  4. 遠くの立方体を選択したまま、[変換] コンポーネントの値を次のように変更します。

    [Position]\(位置\): X = 0.6、Y = 1.6、Z = 1.1

    回転:X = 27、Y = 0、Z = 0

    これで、カメラには左側に近くの立方体、少し離れた右側に遠くの立方体が見えるはずです。 これを確認するには、[階層][メイン カメラ] ([MRTK XR Rig]>[カメラ オフセット] の下) を選択し、[シーン] ウィンドウの [メイン カメラ] ウィンドウを調べます。

    Screenshot of the Main Camera view in the Scene window.

    ヒント

    [シーン] ウィンドウの表示をカメラの見え方に近づけたい場合は、[シーン] ウィンドウ内をスクロールします。 カメラの [フラグをクリア] が既定で [Skybox] に設定されていない場合は、設定が必要な場合があります。

再生モードで立方体をつかんで動かす

  1. [プレイ] を選択します。 プロジェクトの再生が開始されると、ビューが [ゲーム] ウィンドウに切り替わります。

    Screenshot of the Game window after entering Play mode.

    Note

    再生する前に、[プロジェクト設定]>[MRTK3] で有効な [プロファイル] が設定されていることを確認します。

  2. [ゲーム] ウィンドウの右上隅にある 3 つのドット ボタンを選択し、[最大化] を選びます。

    Screenshot of Maximize command for the Game window.

  3. スペース バーを長押しして、シミュレートされた右手をビューに表示させます。

  4. 立方体の側面または底面に触れるまで、シミュレートされた手を近くの立方体に近づけていきます。

    Screenshot of the simulated right hand touching the Near Cube.

  5. マウスの左ボタンをクリックして (こうすると、手が立方体を "つかむ" ようになります)、シーンの立方体をぐるぐる回します。

    Screenshot of Move the cube.

    遠くの立方体をつかんで動かすには、シミュレートされた手にアタッチされている far ポインターを使用します。

  6. 必要に応じて、スペース バーをもう一度長押しして、シミュレートされた右手を表示させます。 手の人さし指の先から伸びる far ポインターに注目します。

    Screenshot of simulated hand's far pointer.

  7. 立方体にポインターの先端が触れるまで、手を遠くの立方体に近づけていきます。 ポインターの先端を立方体に触れさせるには、何度か円を描くように手を動かす必要がある場合があります。

    Screenshot of the far pointer touching the cube.

  8. マウスの左ボタンをクリックし (こうすると、指先でつまむ形の "ピンチ ジェスチャ" になります)、シーンの立方体をぐるぐる回します。