UGUI血條顯示
{
//Overly模式
public bool isCamMode = true; //是否是Camera模式
//Camera模式
public Camera UICam; //depthOnly depth>MainCam.Depth UI層
private RectTransform rectTransform;
public Transform target;
void Start()
{
//獲取血條的 RectTransform 元件
rectTransform = GetComponent<RectTransform>();
//獲取角色
//target = GameObject.FindGameObjectWithTag("Role").transform;
}
void Update()
{
if (target == null || rectTransform == null)
{
return;
}
//將角色的3D世界座標轉換為 螢幕座標
Vector3 targetScreenPosition = Camera.main.WorldToScreenPoint(target.position);
targetScreenPosition.y += 50;
//定義一個接收轉換為 UI 2D 世界座標的變數
Vector3 followPosition;
// 使用下面方法轉換
// RectTransformUtility.ScreenPointToWorldPointInRectangle()
// 引數1 血條的 RectTransform 元件;
// 引數2 角色座標轉換的螢幕座標
// 引數3 目標攝像機,Canvas的 Render Mode 引數型別設定為 Screen Space - Camera時需要寫攝像機引數
// 本例 Canvas的 Render Mode 引數型別設定為 Screen Space - Overlay,在此將第三個引數設定為 null
// 引數4 接收轉換後的座標,需要提前宣告一個 Vector3 引數
if (isCamMode)
{
if (RectTransformUtility.ScreenPointToWorldPointInRectangle(rectTransform, targetScreenPosition, UICam, out followPosition))
{
//將血條的座標設定為 UI 2D 世界座標
transform.position = followPosition;
}
}
else
{
if (RectTransformUtility.ScreenPointToWorldPointInRectangle(rectTransform, targetScreenPosition, null, out followPosition))
{
//將血條的座標設定為 UI 2D 世界座標
transform.position = followPosition;
}
}
}
}