はじめに
VR作りたくて、Unityで試行錯誤して何とか動いたのでそのまとめ2です。
今回はオブジェクトに視点を合わせると色が変わるようにしてみます。
前回の記事
環境
- Mac OSX v10.11
- Google VR SDK v0.8
- Unity v5.3.5
いざ開発!
〜導入編〜が終わっていることを前提に進めたいと思います。
1. 視点を表示する
前回にImportしたGoogle VR SDKの中にGvrReticleというPrefabがありますので、それをMain Cameraの中に置きます。
再生ボタンを押して白い点が表示されていればOKです。
2. オブジェクトに視点が入ったことを検知する
検知させるために色々準備が必要ですので順を追って説明します。
まず、Main Camera に Physics Raycaster
をAdd Componentします。
次に、EventSystem
をSceneに追加します。メニューの [GameObject] -> [UI] -> [EventSystem] で追加。そして、EventSystem
に Gaze Input Module
を追加します。
この時、優先度を上げるために1つ上にMove Upしておきます。
次に、視点が入ったことを検知したいオブジェクトに Event Trigger
を追加します。ここでは赤いCubeに追加しました。
再生ボタンを押して実際に視点を赤いCubeに合わせると、視点のマークが反応することが分かるかと思います。
3. 視点を合わせると色を変える
最後に視点が合わせると色が変わる様にしたいので、赤いCubeに視点が合わさると緑色に変わるようにしたいと思います。
まず、Cube に New Script を Add Component します。
スクリプトの中身は以下のような感じです。
using UnityEngine;
using System.Collections;
public class CubeScript : MonoBehaviour {
void Start () {
SetGazedAt(false);
}
void Update () {
}
public void SetGazedAt(bool gazedAt) {
GetComponent<Renderer>().material.color = gazedAt ? Color.green : Color.red;
}
public void OnGazeEnter() {
Debug.Log ("OnGazeEnter");
SetGazedAt(true);
}
public void OnGazeExit() {
Debug.Log ("OnGazeExit");
SetGazedAt(false);
}
}
Cubeの Event Trigger
の Add New Event Type を押して Pointer Enter と Pointer Exit を追加します。そして、各々のイベントを先ほどのスクリプトと関連付けを行います。
完成です!
再生して確認してみると視点が合わさると色が変わっていることが分かります!