たこやき部屋

SteamVRを使って、Unityでゲームを開発したい

【VR】テレポートでの移動を試す

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」の時

ちょろちょろ