2
3

More than 5 years have passed since last update.

unity5.6でメッセージ通知画面を作ってみる

Posted at

UnityでVRコンテンツ制作

VRコンテンツでメッセージ通知を実現したい

スクリーンショット 0029-05-23 17.07.14.png
(※イメージ)

VRを体験している人に、架空の設定でメッセージがきたことを通知するっていうのを実装したいと思ってます。

準備

・VR再生ができるUnityプロジェクト
・通知アイコン用画像(↓)
mail.png
画像はcubeに貼り付けています。

実装

配置

とりあえず、カメラを移動しても追従してほしいので、ポインターと同じ扱いの位置に配置します。
スクリーンショット 0029-05-23 17.09.53.png
そして、軽く位置の調整をします。

点滅させる

それっぽさを出すために点滅させます。

void Update () {
 if (cnt > 50 && cnt < 100) {
  Transform rb = GetComponent<Transform>();
  Debug.Log(rb.localScale.x);
  rb.transform.transform.localScale = new Vector3(0, 0, 0);
 } else if(cnt > 100){
  Transform rb = GetComponent<Transform>();
  Debug.Log(rb.localScale.x);
  rb.transform.transform.localScale = new Vector3(0.2484762f, -0.2484762f, 0.000002f);
  cnt = 0;
}
  cnt++;
}

このスクリプトを先ほどのmessage_iconにドラックします。
すると画面上で点滅すると思います。

いまいち

しかし、これではAndroidで体験した時に、焦点が合わず「なんか上の方になんかある・・・」という形になってしまい、非常にいまいちでした。

空間の一部に配置する

やはり、空間上にメールアイコンを配置することにしました。先ほどのmessage_iconをこのように配置します。そして、名前をmessage_boardに変更します。
スクリーンショット 0029-05-31 1.42.12.png

イベント処理

メールにフォーカスが当たったらメッセージを表示するようにします。
メッセージmessage_body.png
このメッセージも同じように空間に配置します。

GameObject message;
public void MoveBoxUp(){
  transform.localScale = new Vector3 (1,1,0.000001f);
  message = GameObject.Find("message_body");
  message.transform.localScale = new Vector3 (1,1,0.000001f);
}
public void MessageDelete(){
  message = GameObject.Find("message_body");
  message.transform.localScale = new Vector3 (0,1,0.000001f);
}

changeColorにこのようなメソッドを定義します。

そして、message_boardにこのようにイベントをつけます。
スクリーンショット 0029-05-31 1.43.17.png

最後に、message_bodyの方をこのように設定すれば完了です。
スクリーンショット 0029-05-31 1.51.01.png

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3