地域を選んでください

Australia
Österreich
België
Canada
Canada - Français
中国
Česká republika
Denmark
Deutschland
France
HongKong
Iceland
Italia
日本
Korea
Latvija
Lietuva
Lëtzebuerg
Malta
المملكة العربية السعودية (Arabic)
Nederland
New Zealand
Norge
Polska
Portugal
Russia
Saudi Arabia
Southeast Asia
España
Suisse
Suomi
Sverige
台灣
Ukraine
United Kingdom
United States

ランタイムにコントローラーオブジェクトを取得するにはどうすればいいですか?

WaveVRコントローラーローダー を使用して、ランタイムにコントローラーを読み込みます。このため、コントローラーオブジェクトはエディターで変更できません。

資産 > WaveVR > エキストラ > GenericModel > リソース > コントローラーで、ジェネリックコントローラーモデルのプレハブに WaveVR コントローラーの構造が表示されます。

プレハブには、コントローラーモデル、コントローラービームコントローラーポインターが含まれています。

コントローラーモデルでビームとポインターを見つける(サンプルコード)を開いて、ビームとポインターを取得する方法をご覧下さい。

コントローラーモデルでビームとポインターを見つける(サンプルコード)

ビームとポインターを見つけるには、以下の手順に従ってください。
  1. CONTROLLER_MODEL_LOADED 配信をリッスンして、コントローラーインスタンスを受信します。
  2. コントローラーのすべてのチャイルドを見つけます。
  3. チルドレンにビーム/ポインターがある GameObject を見つけます。
    private GameObject dominantController = null, nonDominantController = null; void OnEnable() { WaveVR_Utils.Event.Listen (WaveVR_Utils.Event.CONTROLLER_MODEL_LOADED, OnControllerLoaded); }
    
    void OnControllerLoaded(params object[] args) { WaveVR_Controller.EDeviceType _type = (WaveVR_Controller.EDeviceType)args [0]; if (_type == WaveVR_Controller.EDeviceType.Dominant) { this.dominantController = (GameObject)args [1]; listControllerObjects(this.dominantController); } if (_type == WaveVR_Controller.EDeviceType.NonDominant) { this.nonDominantController = (GameObject)args [1]; listControllerObjects(this.nonDominantController); } }
    
    void OnDisable() { WaveVR_Utils.Event.Remove (WaveVR_Utils.Event.CONTROLLER_MODEL_LOADED, OnControllerLoaded); }
    
    private void listControllerObjects(GameObject ctrlr) { if (ctrlr == null) return;
    
    WaveVR_Beam _beam = null; WaveVR_ControllerPointer _pointer = null;
    
    // Get all children.GameObject[] _objects = new GameObject[ctrlr.transform.childCount]; for (int i = 0; i < ctrlr.transform.childCount; i++) _objects[i] = ctrlr.transform.GetChild (i).gameObject;
    
    // Find beam. for (int i = 0; i < _objects.Length; i++) { _beam = _objects [i].GetComponentInChildren<WaveVR_Beam> (); if (_beam != null) break; } if (_beam != null) Debug.Log ("‍Find beam:"‍ + _beam.name);
    
    // Find pointer. for (int i = 0; i < _objects.Length; i++) { _pointer = _objects [i].GetComponentInChildren<WaveVR_ControllerPointer> (); if (_pointer != null) break; } if (_pointer != null) Debug.Log ("‍Find pointer:"‍ + _pointer.name); }
送信
ありがとうございます。