節電鯖民の遊び場

04-SteamVR:テレポートしてみる

最終更新:

mcforum

- view
メンバー限定 登録/ログイン

目次


参考


環境


前提

  • 前回の移動、方向転換操作は維持して両立させる
    • Terrainとの衝突判定維持

1.色々調べてみたが、最終的にSteamVRのInteractionSystemに頼る所に落ち着く。


1.1.InteractionSystemのTeleport関連使用するためにはCoreのPlayerが必要なので、とりあえず前回のCapsuleや[CameraRig]は諸々なかったことにする。(削除か無効化する、無効化のほうが楽)


1.2.SteamVR関連のオブジェクトを追加する。

  • 1.2.1.必須のオブジェクト
    • [SteamVR]→[InteractionSystem]→[Core]→[Prefabs]の[Player]を配置する
    • [SteamVR]→[InteractionSystem]→[Teleport]→[Prefabs]の[Teleporting]配置する

  • 1.2.2.任意に置くオブジェクト ※必要なぶんだけ設置する
    • テレポートエリアの設定
      • Planeを置く
      • [SteamVR]→[InteractionSystem]→[Teleport]→[Scripts]の[TeleportArea]をPlaneにつける。※ちなみに透明な板になるので、別途エリアを示す板を重ねて0.1ぐらいTeleportArea側を浮かせるようにすると良いかもしれない。


    • テレポートポイントの設定
      • [SteamVR]→[InteractionSystem]→[Teleport]→[Prefabs]の[TeleportPoint]を配置する


1.3.配置したオブジェクトのインスペクターを弄る


  • 1.3.1.まずプレイヤー
    • Rigidbodyを付ける ※内部にBodyColliderも無効化されて存在しているが、前回の移動スクリプトが上手くいかないのでPlayerに直にRigidbodyを付けることにした。Rotationはロックしておく。
    • Capsule Colliderを付ける ※Rigidbodyが地形に沿って動作するように
    • 前回作成したMoveControllerを付ける ※テレポートとスティックによる移動の両立。前回のCapsuleが残ってたらインスペクタービューのコンポーネントをヒエラルキーのPlayerにドロップすればまるごと引き継げる
    • PlayerスクリプトのTracking Origin TransformにはPlayer自身を設定しておく。テレポートしたときに位置情報を反映するオブジェクトになる。
    • MoveControllerのCam変数にはPlayerの中のSteamVRObjectsの中のVRCameraを設定する

    • Playerの中のFollowHeadの中のHeadColliderは、SphereColliderを無効化する。※Playerに付けたColliderと干渉するので…不具合があったらまた別途検討する


  • 1.3.2.Teleportingの設定

    • TeleportActionにテレポートを発動させるボタンを設定する。 ※予めSteamVR Inputでteleport定義をboolで追加し、割当をしておくとキレイになるが、既に全ボタン割当済みだったらButton_Aをそのまま指定しても良かったか・・・




多分動くはず。
前回の移動実装時点で気づいていたが、カメラの位置とコライダーの位置が同期できていないため、旋回する際に違和感がある。

目安箱バナー