// Update is called once per frame void Update() { RaycastHit hit; if (ViveInput.GetButtonState(ViveHand.Left, ViveButton.Trigger)) { line.enabled = true; if (Physics.Raycast(transform.position, transform.forward, out hit)) { line.SetPosition(1, new Vector3(0f, 0f, hit.distance)); } else { line.SetPosition(1, new Vector3(0f, 0f, 100f)); } } if (ViveInput.GetButtonUp(ViveHand.Left, ViveButton.Trigger)) { line.enabled = false; if (Physics.Raycast(transform.position, transform.forward, out hit)) { var btn = hit.collider.gameObject.GetComponent <Button>(); if (btn) { btn.onClick.Invoke(); } var MeshRendererfound = hit.collider.gameObject.GetComponent <MeshRenderer> (); if (MeshRendererfound) { MeshRendererfound.material = Material_Singletone.Instance.SelectMaterial; } } } }