この記事でのバージョン
Unity 2019.2.21f1
Steam VR Plugin 2.5.0 (sdk 1.8.19)
はじめに
UnityでSteam向けのVRゲームを開発する際は、
SteamVR Pluginというアセットを使うのが一般的ですが、
SteamVR Plugin | Integration | Unity Asset Store |
今回はそのSteamVR Pluginを使って、VRの移動ではお馴染みのテレポートを実装してみようという記事。
イメージとしては以下のような感じ。
Unity + SteamVR Pluginでテレポート pic.twitter.com/mL9Qz4c7yd
— カン@Game Creator(Unity/VR/Switch/Steam) (@Kan_Kikuchi) 2020年4月2日
ちなみにSteamVR Pluginの導入は済んでいる前提なので、あしからず。
なお、SteamVR Pluginの導入については以下の記事を参照の事。
ステージ作成
まず、Cubeで適当なステージを作成します。
「青の所がテレポート出来て、赤の所は出来ない」みたいな感じです。
なお、各CubeにはColliderが付いています。(生成時に自動で付くやつ)
Player
次にHierarchy上のMain Cameraを削除し、
Assets/SteamVR/InteractionSystem/Core/Prefabs/Playerを置きます。
なんとこれだけで手の表示やアニメーション等の実装は完了です……!
またGameViewに2D Debugというボタンが表示されるようになり、
これを押すと、FPSでよくあるキーボード移動(wasd)+マウスでの回転が出来るようになります。
Teleporting
本題のテレポートの実装には
Assets/SteamVR/InteractionSystem/Teleport/Prefabs/Teleportingを使います。
その後、最初に作ったCubeのうち、
移動出来るもの(青いやつ)Teleport Areaというコンポーネントを付けます。
ただし、Teleport Areaを付けたものは透明になってしまうので、
表示用に移動出来るもの(青いやつ)を複製(Teleport Areaは付けない)し、
さらに、テレポート判定の邪魔になってしまうので
Teleport Areaを付けなかった方のColliderを無効にします。
なんとこれだけでテレポートの実装も完了です!
Teleport AreaとColliderが付いてる所に飛べて、それ以外には飛べない感じになります。
また、テレポート時のSEやフェードまで実装されています……!
Unity + SteamVR Pluginでテレポート pic.twitter.com/mL9Qz4c7yd
— カン@Game Creator(Unity/VR/Switch/Steam) (@Kan_Kikuchi) 2020年4月2日
なお、どのボタンでテレポートするのかやどのレイヤーのColliderでテレポートの判定をするか等の設定は
Teleportingに付いてるTeleportというコンポーネントでする事が可能です。
ちなみにTeleport Areaの子にColliderを作れば、子も全てテレポートの対象になります。