*コントローラは杖に置き換えてます
前提状態
TrackedRemoteに以下のスクリプトをアタッチする
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ShowLine : MonoBehaviour { // Start is called before the first frame update private GameObject wand_line; private LineRenderer m_lr; void Start() { wand_line = new GameObject ("wand_line"); m_lr = wand_line.AddComponent<LineRenderer>(); } // Update is called once per frame void Update() { m_lr.SetVertexCount(2); m_lr.startWidth = 0.01f; m_lr.endWidth = 0.01f; Vector3 wand_p = gameObject.transform.position; Vector3 st_p = wand_p + gameObject.transform.forward*0.6f; Vector3 end_p = wand_p + gameObject.transform.forward*5; m_lr.SetPosition (0, st_p); m_lr.SetPosition (1, end_p); } }
コントローラとなるオブジェクトを回転させてる場合は、transform.forwardを適宜、downやrightなど伸ばしたい方向に伸びるように調整する
なぜか分からないがwandにアタッチすると直線の始点が下方向にずれてしまう
=>オブジェクトのpositionはローカル座標における原点となる。Blenderで杖のモデルを見てみたら高さのある位置に置かれていたのがずれる原因だった。
というか、指定位置から直線を伸ばすだけならスクリプトを使わずヒエラルキーに設定した方が明示的で良い。この場合、オブジェクトの原点から直線が伸びるので、杖先が原点の位置になるようにするとよい。