Continuous Move Provider (Device-based) を用いて VR 空間内で移動処理を行う【XR Interaction Toolkit】
先日のこちらの記事でこんなことを書きました.
XR Interaction Toolkit (本記事執筆時点)には移動処理のスクリプトが最初から搭載されていません. よって,自作する必要があります.
すみません.XR Interaction Toolkit 0.10 以上から移動処理が追加されていました.それが Continuous Move Provider です.
環境
- Unity 2019.4.17f1
- URP 7.5.2
- XR Interaction Toolkit 1.0.0-pre.1
Continuous Move Provider
XR Interaction Toolkit 0.9 にはなかったもので, 0.10 以上から追加されたスクリプトコンポーネントです. こちらを利用すれば,VR空間内で移動処理を行うことができます. Action-based と Device-based がありますが,今回は後者の方を説明します. 後ほどまとめて Action-based についてまとめる記事を執筆します.
Continuous Move Provider コンポーネントを適当なオブジェクトにアタッチします. 私は空オブジェクトを生成して,Providersと名付けたオブジェクトにアタッチしました.
System
Locomotion System コンポーネントがアタッチされているオブジェクトを設定します. もし設定されていなかった場合,Awake()処理時に Locomotion System がアタッチされているオブジェクトの走査を行います.
Move Speed
移動速度です.
Enable Strafe
ストライフ移動を有効化するかどうかです. ストライフ移動はネトゲやFPSでよくある移動方法の呼び方で,カニ歩きで横移動することです. Enable Strafe を OFF にすると前後方向しかできなくなります.ONにすることで前後左右に動けるようになります.
Use Gravity
重力処理を有効化するかどうかです.
Gravity Application Mode
重力が効き始めるタイミング制御の設定を行います. Attempting Move なら移動処理中に,Immediately なら即時に重力処理を行います.
Forward Source
順方向を定義するためのソースオブジェクトです. たいていは XR Rig または Main Camera を設定することになります.
Input Binding
Input の Bind を Primary 2D Axis にするか Secondary 2D Axis にするかを設定します. 大方,Primary 2D Axis のままでよいかと思います.
プラットフォームとの対応表はこちらになります.
Controllers
移動処理を行うためのコントローラを設定します. コントローラには XR Controller コンポーネントをアタッチしている必要があります.
Deadzone Min
移動処理の実行を行うことが出来る,Input 値の最低値です. この値を超えないと移動処理は実行されません.
Deadzone Max
移動処理の実行を行うことが出来る,Input 値の最大値です. この値を超えると移動処理は実行されません.
終わりに
Continuous Move Provider で移動処理を行うことが出来るのを確認しました. 移動処理自体は前回の記事と同じなので動画は省略で…. 前後しか移動できないモードもあるというのは真新しい気がする…どこかで応用できそう.