本日は Unity の技術調査枠です。
以下の記事を参考に、カーソルの位置がよく分かるようレーザポインタを表示させてみます。
gametukurikata.com
dev3104.hateblo.jp
ではレーザポインタを実装するプロジェクトを開きます。
今回は HoloToolKit の GazeManager と Cursor を利用しているプロジェクトに反映します。
レーザポインタ用のオブジェクトを作成します。
CreateEmpty でゲームオブジェクトを作成したら LineRenderer コンポーネントを適用します。
LineRenderer に反映するマテリアルを作成します。
Assetsフォルダで右クリック、Create -> Material で新規マテリアルを作成します。
レーザポインタを発光している感じに見せるよう以下の通り、マテリアルを設定します。
1. RenderingMode を Transparent にし Albedo の色を変更する
2. Alpha(透明度)の設定値を 200 にする
3. Emission(光の放出)の設定値を 0.5 にする
単に発色の設定なので後から好みに調整しても問題ありません。
因みに RenderingMode の各設定の意味は以下の通りです。
docs.unity3d.com
作成したマテリアルを LineRenderer に設定します。オブジェクトの設定は以上です。
次に LaserPointer をカメラの位置からカーソルの位置まで伸ばして表示するようにします。
以下のようなスクリプトを作成し、LaserPointer オブジェクトに適用します。
・LaserPointerManager
public class LaserPointerManager : MonoBehaviour { /// <summary> /// カーソル位置 /// </summary> [SerializeField, Tooltip("カーソル位置")] private GameObject p_Cursor; /// <summary> /// レーザポイント /// </summary> private LineRenderer p_LaserPointer; // Use this for initialization void Start() { p_LaserPointer = this.GetComponent<LineRenderer>(); } // Update is called once per frame void Update() { // レーザポイントの始点をカメラ位置に設定 p_LaserPointer.SetPosition(0, Camera.main.transform.position); // レーザポイントの終点をカーソル位置に設定 } }
レーザポイントの終点としてカーソルオブジェクトを設定すれば完了です。
シーンを再生すると、レーザポインタがカメラからカーソル位置まで伸びていることが確認できます。