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


VR用アセット「VRTK」の Example 017_CameraRig_TouchpadWalking の解説です。
タッチパッドにメニューボタンを表示するデモです。
SnapCrab_NoName_2017-2-6_21-38-17_No-00

■公式サイトの解説

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

このExampleの解説動画



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

適宜、以下の記事を参照願います。
  • プレハブ「RadialMenu」の解説
      (今後執筆予定)
  

■Exampleの解説

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

このデモシーンでは、左右のコントローラーに RadialMenu プレハブがぶら下げられており、タッチパッド上に放射状のメニューボタンを表示することができます。また、シーンに配置された Cube にも RadialMenu がぶら下げられており、CubeにタッチするとCubeの横にメニューが表示されます。
SnapCrab_NoName_2017-2-6_21-38-17_No-00

以下、シーンに配置されているオブジェクトについての概要説明です。
  • Left Controller、RightController: [VRTK] ゲームオブジェクトの下に配置されている、左右のコントローラー用のVRTKスクリプトをアタッチするゲームオブジェクト。このデモシーンでは、それらの下に RadialMenu プレハブがぶら下げられている。
    RadialMenu の孫オブジェクトの Panel にアタッチされている RadialMenu スクリプトのインスペクタで、表示するボタンの数やそれらの振る舞い、メニューを常時表示しておくか否か等の設定ができる。
    このデモでは、右コントローラーはボタン数5で常時表示、左コントローラーはボタン数4でタッチパッドに触れたときのみメニューを表示する設定になっている。

    右コントローラーのRadialMenu設定。
    SnapCrab_NoName_2017-2-6_22-20-31_No-00

    左コントローラーのRadialMenu設定。
    SnapCrab_NoName_2017-2-6_22-22-5_No-00

  • Cube (1): シーン上に浮かんでいるCube。コントローラーで触れるとその横に RadialMenu が表示される。このCubeには RadialMenu プレハブがぶら下げられており、その孫オブジェクトには RadialMenu スクリプトとともに VRTK_IndependentRadialMenuController スクリプトがアタッチされている。このスクリプトをアタッチすることで、コントローラー以外のオブジェクトでも RadialMenu を使用することができるようになる。
    SnapCrab_NoName_2017-2-6_22-32-53_No-00

    VRTK_IndependentRadialMenuController スクリプトの説明文。
    // Independent Radial Menu Controller|Prefabs|0050
    namespace VRTK
    {
        using UnityEngine;
        using System.Collections.Generic;
        using System.Collections;
    
        /// <summary>
        /// This script inherited from `RadialMenuController` and therefore can be used instead of `RadialMenuController` to allow the RadialMenu to be anchored to any object, not just a controller. The RadialMenu will show when a controller is near the object and the buttons can be clicked with the `Use Alias` button. The menu also automatically rotates towards the user.
        /// </summary>
        /// <remarks>
        /// To convert the default `RadialMenu` prefab to be independent of the controllers:
        ///
        ///   * Make the `RadialMenu` a child of an object other than a controller.
        ///   * Position and scale the menu by adjusting the transform of the `RadialMenu` empty.
        ///   * Replace `RadialMenuController` with `VRTK_IndependentRadialMenuController`.
        ///   * Ensure the parent object has the `VRTK_InteractableObject` script.
        ///   * Verify that `Is Usable` and `Hold Button to Use` are both checked.
        ///   * Attach `VRTK_InteractTouch` and `VRTK_InteractUse` scripts to the controllers.
        /// </remarks>
        public class VRTK_IndependentRadialMenuController : RadialMenuController
        {
            // 中身は省略
        }
    }
    

今回は以上です。