Oculus Rift/Oculus Go でレーザーポインタを当てたオブジェクトの色を変える
Oculus Rift/Oculus Go でレーザーポインタを使用して見ようと思い、色々と勉強してみました。今回は、最終的にレーザーポインタがあたったオブジェクトの色を変更するところまで実行します。
こんな感じで、レーザーポインタがオブジェクトにあたった時に色を変えています。(赤→黄色)
今回つくったもの
環境
- Unity 2018.1.3f.1
前提条件
下記のサイトを参考に、レーザーポインタでオブジェクトを選択できるところまで進めている前提です。
developer.oculus.com
私はこちらのサイトをベースに進めました。上記の公式ブログと読み比べながら進めると非常にわかりやすいのでおすすめです。
scrapbox.io
この OVR Raw Raycaster の On Hover Enter と On Hover Exit を使用する処理まで進めて貰えれば問題ありません。
追加処理の説明
下記が追加したインスタンス変数と各メソッドの処理内容です。
protected Material oldHoverMat; public Material yellowMat; public void OnHoverEnter(Transform t) { Debug.Log("OnHoverEnter"); oldHoverMat = t.gameObject.GetComponent<Renderer>().material; t.gameObject.GetComponent<Renderer>().material = yellowMat; } public void OnHoverExit(Transform t) { Debug.Log("OnHoverExit"); t.gameObject.GetComponent<Renderer>().material = oldHoverMat; }
変更前と変更後のMaterial情報を持たせる変数です。変更後のMaterialはInspectorから指定するようにしています。
protected Material oldHoverMat; public Material yellowMat;
oldHoverMat に変更前のMaterial情報を入れ、その下で yellowMat で指定したMaterial に変更しています。
oldHoverMat = t.gameObject.GetComponent<Renderer>().material; t.gameObject.GetComponent<Renderer>().material = yellowMat;
前の情報を保持して、Exitした時に戻さないと、レーザーポインタが触れた全オブジェクトがyellowMat に染まってしまうので注意が必要。
t.gameObject.GetComponent<Renderer>().material = oldHoverMat;