本日は MRTK の小ネタ枠です。
MRTKのObjectManipulatorで指定の平面上でオブジェクトを移動する方法を記事にします。
ObjectManipulator
片手または両手を使ったオブジェクトの移動、スケール変更、回転を実現するコンポーネントです。
設定を変更することで様々な入力のカスタマイズが可能です。
docs.microsoft.com
サンプルプロジェクトの作成
MRTK をインポートしたサンプルプロジェクトを作成します。
MRTK のインポートと基本設定
MRTK のインポートと HoloLens 向けプロジェクトの基本設定を行い、サンプルプロジェクトを作成します。
手順の詳細は以下の記事を参照してください。
bluebirdofoz.hatenablog.com
サンプルシーンの作成
シーンに空オブジェクトを作成します。
また、オブジェクトが指定平面上を移動しているのが分かりやすくなるように Plane オブジェクトを子オブジェクトに追加しました。
3DObject を空オブジェクトの子オブジェクトとして追加し、ObjectManipulator を設定します。
ObjectManipulatorの設定
ObjectManipulator の制約を設定して、指定の平面上で動くようにします。
[ConstrainManager]コンポーネントの[AddConstraintToGameObject]のプルダウンを開き、[MoveAxisConstraint]を選択します。
これで[MoveAxisConstraint]コンポーネントが追加されます。
今回は3Dオブジェクトのローカル軸基準で制約を設定したいので[UseLocalSpaceForConstraint]にチェックを入れます。
次に[ConstraintOnMovement]で動きを制限する軸を指定します。
今回はローカル軸を指定するようにしたので平面の直交軸である[YAxis]方向の移動を制限します。
動作確認
シーンを再生して動作を確認します。
3Dオブジェクトを掴んで動かすとY軸方向の移動が制限されているため、指定の平面上を移動するようにオブジェクトを移動できます。
またローカル軸を指定しているので、オブジェクトの角度が変化しても平面上を移動します。