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


VR用アセット「VRTK」の Example 012_Controller_PointerWithAreaCollision の解説です。テレポートしたい先のプレイエリアに他のオブジェクトがあると、テレポートできないようになっています。
SnapCrab_NoName_2017-2-1_9-14-20_No-00

■公式サイトの解説

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

このExampleの解説動画



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

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

■Exampleの解説

VRTK/Examples 内にある当該番号のシーンを呼び出すことで、デモを動かしてみることができます。
 
このシーンではコントローラーからのポインターを使ってテレポートを行えますが、ポインタービームの先に投影されたプレイエリアスペースが他のオブジェクトと衝突している場合、テレポートアクションは不可となります。これにより、ユーザーがテレポートできないレベル(高さ・土地)を設定することができます。
SnapCrab_NoName_2017-2-1_9-16-39_No-00

以下、シーンに配置されているオブジェクトについての概要説明です。
  • ExampleWorldObjects: シーン上に配置されたオブジェクト群(上図のとおり)。テレポートしてオブジェクトの上に乗ることもできる。コントローラーからのポインタービームが指し示したプレイエリアカーソルがこれらのオブジェクトに衝突している場合、その先へはテレポートできないようになっている(VRTK_PlayAreaCursor の設定による)。

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

    VRTK_BezierPointer スクリプトにより、コントローラーからベジエ曲線ポインタービームを発することができるようになっている。(VRTK_BezierPointer スクリプトの解説は この記事 を参照)

    また、VRTK_PlayAreaCursor スクリプトにより、コントローラーからのポインタービームの先にはプレイエリアカーソルも表示される。Handle Play Area Cursor Collisions がチェックされているため、投影されたプレイエリアカーソルが他のオブジェクトに衝突している場合はカーソルが Point Miss Color となり、テレポートできないようになっている。(VRTK_PlayAreaCursor スクリプトの解説は この記事 を参照)
    SnapCrab_NoName_2017-2-1_10-6-18_No-00

  • PlayArea: [VRTK] ゲームオブジェクトの配置されているゲームオブジェクト。
     VRTK_HeightAdjustTeleport スクリプト および、VRTK_BodyPhysics、VRTK_HeadsetCollision、VRTK_HeadsetFade、VRTK_HeadsetCollisionFade スクリプトがアタッチされている。(いずれのスクリプトも詳しい解説は別の記事で行う)

    VRTK_HeightAdjustTeleport スクリプトがアタッチされているため、ビームを発しているコントローラーのタッチパッドを離すと、ビームが指し示していた場所へテレポートする。直接見ることのできない高さの場所へも移動可能。
    SnapCrab_NoName_2017-2-1_10-14-46_No-00

今回は以上です。