Continuous Move Provider (Device-based) を用いて VR 空間内で移動処理を行う【XR Interaction Toolkit】

先日のこちらの記事でこんなことを書きました.

xrdnk.hateblo.jp

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と名付けたオブジェクトにアタッチしました.

f:id:xrdnk:20210128211703p:plain

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 のままでよいかと思います.

プラットフォームとの対応表はこちらになります.

f:id:xrdnk:20210127232905p:plain

Controllers

移動処理を行うためのコントローラを設定します.
コントローラには XR Controller コンポーネントをアタッチしている必要があります.

Deadzone Min

移動処理の実行を行うことが出来る,Input 値の最低値です.
この値を超えないと移動処理は実行されません.

Deadzone Max

移動処理の実行を行うことが出来る,Input 値の最大値です.
この値を超えると移動処理は実行されません.

終わりに

Continuous Move Provider で移動処理を行うことが出来るのを確認しました.
移動処理自体は前回の記事と同じなので動画は省略で….
前後しか移動できないモードもあるというのは真新しい気がする…どこかで応用できそう.