(この記事の使用環境: Unity5.5.0f3 Personal、Windows10、SteamVR Plugin 1.2.0、VRTK3.0.1)


VR用アセット「VRTK」の Example 033_CameraRig_TeleportingInNavMesh の解説です。
NavMeshを利用してテレポート可能なエリアを限定するデモです。
VRTK_TeleportingInNavMesh

■公式サイトの解説

VRTK公式サイトでこのExampleの解説文及び解説動画を見ることができます。ただし、動画に関してはVRTK旧バージョンのときに作られたものであり、VRTK3.0(以降)では設定等が異なっている場合があることに留意してください。動きを中心に見てもらえれば良いかと思います。

このExampleの解説動画
(このExampleについての公式解説動画はまだアップされていません)


■VRTKのセットアップ方法および使用されているスクリプトの解説

適宜、以下の記事を参照願います。

■Exampleの解説

VRTK/Examples 内にある当該番号のシーンを呼び出すことで、デモを動かしてみることができます。

シーンにはTerrain(地形)オブジェクトその他のオブジェクトが配置されています。そのうち、黄色のオブジェクトにはNavMeshがBakeされていません。このデモシーンでは、VRTK_HeightAdjustTeleport の設定により、NavMeshの範囲外である黄色のオブジェクトの上や周囲にはテレポートできないようになっています。
SnapCrab_NoName_2017-2-5_11-24-53_No-00
SnapCrab_NoName_2017-2-5_11-25-10_No-00

以下、シーンに配置されているオブジェクトについての概要説明です。
  • Example Objects: シーン上に配置されているCube(上図参照)。黄色のCubeの上および周囲にはNavMeshがBakeされていない。

  • Left Controller、RightController: [VRTK] ゲームオブジェクトの下に配置されている、左右のコントローラー用のVRTKスクリプトをアタッチするゲームオブジェクト。
    VRTK_ControllerEvents と、VRTK_SimplePointer または VRTK_BezierPointer スクリプトがアタッチされている。

    ポインタースクリプトにより、コントローラーからポインタービームを発することができるようになっている。

  • PlayArea: [VRTK] ゲームオブジェクトの配置されているゲームオブジェクト。
    VRTK_HeightAdjustTeleport スクリプトと VRTK_BodyPhysics スクリプトがアタッチされている。

    VRTK_HeightAdjustTeleport スクリプトがアタッチされているため、ビームを発しているコントローラーのタッチパッドを離すと、ビームが指し示していた場所へテレポートする。
    このデモでは NavMesh Limit Distance の値に 0.1 がセットされているため、NavMesh の外 0.1(m)までの範囲でのみテレポート可能となっている(この値がゼロならば、テレポートはNavMeshによる制約を受けない)。
    ※補足:なお、この「0.1」という値は小さすぎるのか、本来テレポートできるはずのエリアへのテレポートもできない現象が発生した。値を概ね 0.5 以上にすると問題なくテレポートできるようになった。
    SnapCrab_NoName_2017-2-5_11-44-5_No-00

今回は以上です。