Unity:2019.4.9f1
SteamVR Plugin:2.6.1 (sdk 1.13.10)
を使用しています。
「テレポート」といえば、真っ先に「テレポート山陰」を思い出す方が多いと思いますが・・・思いますが!
今回はVRでの移動手段の方の「テレポート」です。
SteamVR Pluginを使いますが、使い方はここを参考にしてください。
takoyakiroom.hatenablog.com
決まった場所にテレポート
最初はこんな感じで、行ける場所にマーカーが出るやつを作ってみましょう。

正直、使ってるゲームはあんましみたことないけどね・・・
まず準備として、「Player」のプレハブを置きます。
あと、地面がわからないので、目印に床(Floor)をメニューから「GameObject」→「3D Object」→「Plane」で作っときます。

次に「SteamVR」→「InteractionSystem」→「Teleport」→「Prefabs」から「Teleporting」を選んで、ヒエラルキーに配置します。
これがテレポート移動の根幹になっています。親分です!

置く場所はどこでも良いです。

最後に、同じく「SteamVR」→「InteractionSystem」→「Teleport」→「Prefabs」から「TeleportPoint」を選んで、ヒエラルキーに配置します。
これがテレポート先ですね。飛びたい場所に置きましょう。

実行すると、テレポートで移動できるようになります。
トリガーとかタッチパッドの上を押すと、移動先のマーカーが表示されますよ。

自由にテレポート
ある程度自由な移動できるテレポートを試してみましょう。
画面にPlaneを配置して、このPlaneの上なら自由に移動できるようにしてみます。

作ったPlaneに「SteamVR」→「InteractionSystem」→「Teleport」→「Scripts」の「TeleportArea」をアタッチします。

すると、Planeの外観が変わります。

これで完成、実行すると「TeleportArea」をアタッチしたところにテレポートできます。

「TeleportArea」をアタッチしてない場所には行けませぬ。

TeleportAreaをアタッチしたらオブジェクトのマテリアルが変わるんだけど、変わってほしくない時はスクリプト修正するしかないのかな?
設定いろいろ
インスペクターから設定できる項目をちょっと解説です。
TeleportAreaとTeleportPointのスクリプト
| Locked | マーカーは表示されるけど、移動できません |
| MarkerActive | チェックなし:常にマーカーが表示されます チェックあり:移動する時だけマーカーが表示されます |
Teleportのスクリプト
| AreaVisibleMaterial | 通常時のTeleportAreaのMaterial |
| AreaLockedMaterial | TeleportAreaがロックされている時のMaterial |
| AreaHighlightedMaterial | 飛び先に選んだ時のTeleportAreaのMaterial |
| ShowPlayAreaMarker | プレイエリアの枠を表示するかどうか |
| TeleportFadeTime | 移動先を決定してから移動するまでの、画面切り替えのフェードアウト時間 |
| ArcDistance | 飛べる距離 |
試してみる
・「ShowPlayAreaMarker」のチェックを外した時
プレイエリアの枠が消えています。上の方の画像と比較してみよう。

・「ArcDistance=1」の時

ちょろちょろ