前回はMeta Quest 2を装着し、自作した8畳部屋の3D空間を見渡せるところまで到達しました。しかし、まだその場に固定されたままで空間内を歩き回ることはできません。
今回は Unity の XR Interaction Toolkit を使い、コントローラーのスティック操作で自由移動(Locomotion)と視点回転を実装していきます。「操作に反応しない」「両手で同じ動きになる」といった罠にハマりつつも、自分好みの操作感へカスタマイズするまでの試行錯誤をまとめました!
移動&回転機能(Locomotion)の追加
まずは XR Origin に対し、VR空間内を移動するための根幹システムを追加します。
ヒエラルキーの XR Origin を選択。
- インスペクター下の Add Component から Locomotion System を追加。
- 続けて、スティック移動を担う Continuous Move Provider (Action-based) と、視点回転を担う Snap Turn Provider (Action-based) を追加。
- それぞれの System 項目へ XR Origin をドラッグ&ドロップで紐付け、Continuous Move の Forward Source に Main Camera を指定します。

罠①:ビルドしたのにスティック操作に全く反応しない!?
設定を終えて実機ビルドを行ったものの、コントローラーのスティックをいくら倒しても一切動きません。

原因を確認すると、Input Action Manager の Action Assets が空欄(要素数 0)になっていました。入力の受け皿を作るため要素数を 1 に変更したものの、肝心の入力設定ファイル(XRI Default Input Actions)がプロジェクト内から見つからない状態です。

解決のため、Package Manager の XR Interaction Toolkit にある Samples タブから Starter Assets をインポート!
生成された XRI Default Input Actions を Action Assets の 要素 0 にセットすることで、ようやく入力の受け取り準備が整いました。
罠②:移動と回転が両手で同時に発生するカオス状態
「これで動くはず!」とプリセットを適用して実機テストをしたところ、今度は左右どちらのスティックを倒しても「移動と回転が同時に発生する」という謎の現象に襲われました。
インスペクターを確認すると、Continuous Move Provider(移動)と Snap Turn Provider(回転)の両方において、Left Hand と Right Hand の双方に操作が割り当たっていたことが原因でした。
解決策:自分好みの「左=回転」「右=移動」へカスタマイズ!
一般的なVRゲームでは「左=移動」「右=回転」が標準ですが、個人的には 「左スティック=回転」「右スティック=移動」 の方が直感的に扱いやすいため、手動で割り当てを再構成しました。
- Continuous Move Provider(移動): Left Hand Move Action を削除し、Right Hand Move Action のみに指定。
- Snap Turn Provider(回転): Right Hand Snap Turn Action を削除し、Left Hand Snap Turn Action のみに指定。
不要な割り当てを解除し、System と Forward Source の参照も再設定してビルドを実行します。

まとめ
実機で確認したところ、右スティックで8畳部屋の中を自由に歩き回り、左スティックでカチカチと視点を切り替えられる理想の操作感が完成しました!
何度もビルドと実機テストを繰り返して寄り道はしましたが、トラブルの原因を1つずつ潰し、「自分にとって最も使いやすい操作系にカスタマイズできた」 のは大きな収穫でした。
これで、目標としていた「自作の8畳部屋をVR空間として構築し、自由に歩き回る」という基礎部分はしっかり完成し、今回の部屋作りもこれで一区切りとなります!
次回は、これまでの開発プロセスを振り返り、Blenderでの部屋モデリングからUnityでのVR化・移動実装までを体系的にまとめた「VRで部屋をつくる」の総集編(まとめ記事)を執筆する予定です。お楽しみに!

コメント