Unity功能 3D世界座標轉2D螢幕座標,UI條貼在3D物體上面
阿新 • • 發佈:2021-01-24
技術標籤:Unity功能
讓2D UI跟隨3D物體移動或指示3D物體的位置該怎麼做呢?
將程式碼繫結到UI上
程式碼:
using UnityEngine; /// <summary> /// 3D物體轉2D螢幕座標 /// </summary> public class Position3DTo2D : MonoBehaviour { public Transform target; // 3D目標 public Transform ui; // 2D UI private Vector3 originOff; // 當前UI系統(0,0)點 相對於螢幕左下角(0, 0)點的偏移量 private void Start () { originOff = new Vector3(-Screen.width / 2, -Screen.height / 2 - 100);//中間向下偏移100畫素 Reposition(); } private void Update () { // 需要效能優化 僅在物體移動或相機移動後呼叫即可 Reposition(); } // 根據目標物體 重定位UI private void Reposition() { Vector3 position = Camera.main.WorldToScreenPoint(target.position) + originOff; position.z = 0; ui.localPosition = position; } }
實現效果: