はじめに
最近、トラブルが多く、android関連のモジュールをインストール中にエラーが発生して、また復旧作業。
ただ、同じ事を繰り返してるので、流石に今回は短時間で解決しました。
コーディングや実装ではなく、Unity のシステム構造や内部構成に詳しくなってます。
今回は、VRとPCでの移動の両方に対応した実装をやってみたので、それを記事にまとめてみます。
前回の記事:
[Unity #14] 死闘を越えて 2022.3 LTSで築く『確実に動く』Quest 2開発環境構築
最新版の罠を回避し、安定版Unity 2022.3 LTSを使用してMeta Quest 2向けのVR開発環境を一から構築する手順を解説します。
https://humanxai.info/posts/unity-14-quest2-vr-setup-2022-3-lts/【Unity/VR】1つのスクリプトでVR移動とPC操作(WASD)を両立
VR開発(Meta Quest等)において、「実機確認は面倒だけど、PC上でサクッと動作確認したい」という場面は多いですよね。今回は、XR Interaction Toolkitを使用し、1つのスクリプトでVRのスティック移動とPCのキーボード操作を共存させる実装ガイドをまとめます。
1. 開発環境
- Unity: 2022.3.62f3 (LTS)
- XR Interaction Toolkit: (Starter Assets インポート済み)
- Android Build Support: インストール済み
2. 移動スクリプト:PlayerMover.cs
カメラ(頭)の向いている方向に合わせて前後左右に移動する、シンプルなスクリプトです。
using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerMover : MonoBehaviour
{
[Header("移動速度")]
public float speed = 2f;
[Header("PC移動キー (WASD) / VR移動スティック")]
public InputActionProperty moveAction;
[Header("参照: カメラ (向いている方向に進む)")]
public Transform headTransform;
void Update()
{
Vector2 moveInput = moveAction.action.ReadValue<Vector2>();
// 入力がない場合は処理しない
if (moveInput.sqrMagnitude < 0.01f) return;
// 頭の向き(Y軸回転のみ)を基準に方向を計算
Vector3 forward = new Vector3(headTransform.forward.x, 0, headTransform.forward.z).normalized;
Vector3 right = new Vector3(headTransform.right.x, 0, headTransform.right.z).normalized;
// 移動量の計算
Vector3 move = forward * moveInput.y + right * moveInput.x;
// 座標の更新
transform.position += move * speed * Time.deltaTime;
}
}
3. Unityエディタでのセットアップ
- コンポーネントの追加: XR Origin (XR Rig) に上記のスクリプトをアタッチします。
- カメラの紐付け: Head Transform 欄に、配下の Main Camera をドラッグ&ドロップします。
- アクションの指定:
- Move Action の左側にある Use Reference にチェックを入れます。
- 右側の欄(None)から XRI LeftHand Locomotion/Move を選択します。
4. 【重要】Input Actionの設定(PC対応)
デフォルトの Move アクションはVRスティック専用になっていることが多いため、以下の手順でキーボード入力を追加します。
XRI Default Input Actionsファイルを開きます。XRI LeftHand Locomotion>Moveアクションを選択します。- 「+」ボタン から
Add Up\Down\Left\Right Compositeを選択し、名前を「Keyboard」にします。 - 各方向に W/A/S/D キーを割り当てます。
- 「Save Asset」 ボタンを押して保存します(これを忘れると反映されません!)。
5. 動作確認
- VR: 左スティックを倒すと、向いている方向に移動します。
- PC: Game画面を一度クリックした後、WASDキーで移動できます。
注意点: もしAndroidモジュールの不具合でビルド設定がおかしくなった場合は、Unity Hubから一度「Hubから削除」し、手動でフォルダを削除してから再インストールするのが確実です。
まとめ
この手法を使えば、VR実機を被ることなくPC上でデバッグが進められるため、開発効率が劇的に向上します。
Androidモジュール復旧
実装前に起こった、Androidモジュールのインストールエラーとその復旧についても情報をまとめておきます。
1. 発生した問題:
- ビルド設定で「Android module not loaded」と表示され、モジュールを追加しようとしてもUnity Hubに「モジュールを加える」ボタンが出ない。
- 手動でリストに追加しようとすると「エディターはすでにリストにあります」と拒否される「幽霊登録」状態。
2. 解決した手順(力技のクリーンインストール):
- Unity Hubを完全に終了させる。
C:\Program Files\Unity\Hub\Editor内の該当バージョンフォルダを手動で物理削除。%AppData%/UnityHubのキャッシュを削除して「記憶」をリセット。- Hubからではなく、公式サイトの「ダウンロードアーカイブ」の
Unity Hubボタン経由で、Androidモジュールに最初からチェックを入れて再インストール。
3. 復旧後の確認:
Preferences > External Toolsで、UnityがインストールしたJDK/SDK/NDKのパスが赤文字にならず、正常に紐付いていることを確認。
💬 コメント