【Unity】【UGUI】對映3D座標到UI上(血條、人物狀態)
前言:
把3D座標對映到UI上,這種操作多用於類似血條、人物名之類的東西:
這種其實是可以整個通用的方法來解決的:通過3D座標直接修改UI控制元件的位置:
正文:
需求很明瞭簡潔,所以直接上程式碼:
/// <summary>
/// 通過世界座標設定UI的位置
/// </summary>
/// <param name="rectTransform"></param>
/// <param name="worldPos"></param>
public static void Do_SetUIPositionByWorldPos(this RectTransform rectTransform, Vector3 worldPos)
{
if (rectTransform == null)
return;
if (uiCamera == null)
return;
Vector3 screenPos = worldCamera.WorldToScreenPoint(worldPos);
// Z小於0,代表在相機後面,此時X、Y反向;
if (screenPos.z < 0)
{
screenPos.x *= -1;
screenPos.y *= -1;
}
Vector3 uiWorldPos = uiCamera.ScreenToWorldPoint(screenPos);
rectTransform.position = uiWorldPos;
rectTransform.Do_SetLocalPosZ(0);
}
public static void Do_SetLocalPosZ(this Transform t, float z)
{
Vector3 localPos = t.localPosition;
localPos.z = z;
t.localPosition = localPos;
}
上文中的 worldCamera 是指照3D物體的相機。
uiCamera是指照射UI的相機。
注意區分。
PS:
這個方法要放在一個靜態類裡,如果不明白這種寫法可以去搜尋C#類擴充套件。
PS2:
我感覺這個方法並不是效能最優,後面還以再研究怎麼優化。
相關文章
- 3d基礎 - 從模型座標到螢幕座標3D模型
- S/4HANA生產訂單的標準狀態和透明工廠原型狀態的對映原型
- 關於Unity中的世界座標和區域性座標Unity
- HDU 3682 To Be an Dream Architect:查重【三維座標系中點在實數上的對映】
- Unity UGUI——Rect Transform包(Anchors)UnityUGUIORM
- 通過Map 3D API讀取線狀要素的節點座標3DAPI
- 海康相機 畫素座標(px,py)到sdk ptz 座標轉換最後到onvif ptz座標
- [Unity] UGUI優化 - 知識點UnityUGUI優化
- [Unity UGUI]點選和長按UnityUGUI
- 【Unity3D的四種座標系】Unity3D
- Echarts:10-5-2:柱狀圖(座標軸刻度與標籤對齊)Echarts
- UI與實體的對映UI
- unity3d UGUI教程之-UGUI 實現刮刮卡橡皮擦Unity3DUGUI
- Unity——有限狀態機FSM修改Unity
- Unity/C# 有限狀態機UnityC#
- 如何設定微軟拼音狀態條上的圖示微軟
- 【Unity3D ugui】使用藝術字Unity3DUGUI
- 【Unity】UGUI模擬NGUI的UISprite-->LImageUnityUGUINGUI
- unity 動態修改當前橫豎屏狀態Unity
- elasticsearch的字串動態對映Elasticsearch字串
- Unity 3d UI獲取外部攝像頭拍攝Unity3DUI
- Dozer物件對映框架Map到JSONString對映問題排查物件框架JSON
- 3D UI 場景中如何把 X Y 平面的尺寸對映為螢幕畫素3DUI
- Unity Shader基於視差對映的雲海效果Unity
- 如何證明CRM WebClient UI上的應用是有狀態(Stateful)的WebclientUI
- 滑鼠移到元素上指標變為不可用狀態指標
- element ui 解除禁用按鈕狀態UI
- EntityFramework Core如何對映動態模型?Framework模型
- Unity 之 UGUI Scroll Rect滾動矩形元件詳解UnityUGUI元件
- Unity【話大】設計模式之狀態模式Unity設計模式
- unity 實現滑鼠控制角色移動和角色頭部的血條顯示Unity
- Unity3d 人物的跳躍Unity3D
- JS改變HTML元素的絕對座標JSHTML
- Docker 如何動態修改容器埠對映Docker
- 【UGUI原始碼分析】Unity遮罩之Mask詳細解讀UGUI原始碼Unity遮罩
- 在Unity中用UGUI製作可輸入下拉框UnityUGUI
- MyBatis從入門到精通(九):MyBatis高階結果對映之一對一對映MyBatis
- MyBatis從入門到精通(十一):MyBatis高階結果對映之一對多對映MyBatis