【Unity】3DオブジェクトにUI(2D)オブジェクトを追随させる
みなさん、こんにちは。ぽうひろです。
今日はアーバンナックル開発の時に調べた、
3DオブジェクトにUI(2D)オブジェクトを追随させる方法を書き留めておきたいと思います。
こちらの記事を参考にさせていただきました!
qiita.com
こんな感じで、動く敵(右側)の上部に必殺ゲージ(uGUIの2Dオブジェクト)を追随させ、ゲージが溜まったら必殺技を撃ってくる!みたいなことをやりたい。
ゲーム画面はメインカメラ(Perspective)、UIはUI Camera(Orthographic)で、別の座標系になっているため、ちょっと小細工が必要です。
// 3Dオブジェクトのワールド座標から、Perspective カメラのビューポート座標を求める var viewPortPos = Camera.main.WorldToViewportPoint(player2.transform.position); // 上記ビューポート座標を Orthographic カメラのワールド座標に逆変換する var worldPos2d = GameObject.Find("UI Camera").GetComponent<Camera>().ViewportToWorldPoint(viewPortPos); // 2Dオブジェクトの座標を移動 GameObject esp = GameObject.Find ("ESp"); //worldPos2dのy軸を少し足してキャラの上部に来るように調整 esp.transform.position = new Vector3(worldPos2d.x,worldPos2d.y+2.5f,worldPos2d.z);
このコードの結果、このような動きになりました。uGUIで作った敵の必殺ゲージがちゃんと敵の上部に表示されていますね!
動く対戦相手のHPを表示させるような時にも使える手法かと思います。
それでは、また!