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


VR用アセット「VRTK」の Example 024_CameraRig_ExcludeTeleportLocation の解説です。
テレポートできない場所を設定するデモです。
VRTK_ExcludeTeleportLocation

■公式サイトの解説

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

このExampleの解説動画



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

適宜、以下の記事を参照願います。
  • スクリプト「VRTK_PolicyList」の解説
      (今後執筆予定)

■Exampleの解説

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

このデモシーンは、特定のオブジェクトをテレポート先の対象から除外する方法について示します。特定の名前を付けたタグまたはスクリプトを適用することによってそれを可能にしています。
このシーンで、黄色のオブジェクトには ExcludeTeleport タグが付けられているためにテレポート先の対象として除外されています。また、黒色のオブジェクトは ExcludeTeleport と名付けられたスクリプトがアタッチされているために、テレポート先の対象から除外されています。この ExcludeTeleport スクリプトは何も処理するメソッドを持たないただのプレースホルダーとして利用されています。
SnapCrab_NoName_2017-2-5_13-21-3_No-00

以下、シーンに配置されているオブジェクトについての概要説明です。
  • 黄色の Cube および Sphere: シーン上に配置されている黄色の Cube および Sphere(上図参照)。これらには ExcludeTeleport タグが付けられているため、テレポート対象から除外される。
    SnapCrab_NoName_2017-2-5_13-29-8_No-00

  • 黒色の Cube:  シーン上に配置されている黒色の Cube(上図参照)。これらには ExcludeTeleport スクリプトが付けられているため、テレポート対象から除外される。
    SnapCrab_NoName_2017-2-5_13-32-2_No-00

    アタッチされている ExcludeTeleport スクリプトの中身は空っぽである。
    namespace VRTK.Examples
    {
        using UnityEngine;
    
        public class ExcludeTeleport : MonoBehaviour
        {
        }
    }
    

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

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

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

    VRTK_HeightAdjustTeleport の Target List Policy に VRTK_PolicyList がセットされている。

    その参照先となる VRTK_PolicyList では、Operation に「Ignore」が、Check Types に「Tag」および「Script」が、そして対象とする文字列の配列には「ExcludeTeleport」がセットされている。これは、「ExcludeTeleport」と名付けられたタグまたはスクリプトを持つオブジェクトを無視する、というポリシーリストとなる。
    (※Operationの値を「Ignore」ではなく「Include」に変えると、「ExcludeTeleport」と名付けられたタグまたはスクリプトを持つオブジェクトのみを対象にする、というポリシーとなる)
    SnapCrab_NoName_2017-2-5_13-36-5_No-00

今回は以上です。