UnityでVR飛行移動を実装

UnityのVRプロジェクトに快適な移動システムを実装する。

仕様

  • 左コントローラの向きを前方として左スティックで高速飛行移動
  • 重力なし・慣性なし
  • 右スティックで高速スムーズターン

VR酔いはプレイヤーを低速で歩かせ、地形に合わせて視界を揺らし、狭い室内で障害物にぶつけたり、余計な物理法則を付与するせいで起きる。それらを強いながら酔い対策だと視界をトンネル化するのは愚かの極み。

回転に関しても、酔い対策に規定の角度しか回転できないスナップターンが採用されるが、スムーズターンが酔うのは設定速度が遅すぎるせいだ。

実装

自分で追加するか、テンプレートやアセットのサンプルシーンにあるXR Origin内のコンポーネント設定を変更する。

  • Continuous Move Provider (Action-Based)又は
    Dynamic Move Provider
    • Move Speed: 15程度
      • 遅いと酔う。最低10以上
    • Enable Fly: ON
    • 重力を使用: OFF
    • Forward Source: 左コントローラ用オブジェクト
    • (DynamicMoveProviderの場合)
      Left Hand Movement Direction: Hand Relative
  • Continuous Turn Provider (Action-Based)
    • Turn Speed: 500程度
      • 遅いと酔う。最低400以上
    • Right Hand Turn Action > Use Reference: ON
    • Right Hand Turn Action > Reference: XRI RightHand Locomotion/Turn