此脚本挂在人物身上 因为要在头顶 UIHeight 是相对人物做的一个高度偏移
public Transform bloodSlider;//血条
private Transform Canvas;
private Vector3 worldPosition;
private Camera uicamera;
public float UIHeight = 1.5f;
private void Start()
{
Canvas = GameObject.Find("Canvas").transform;
//如果canvas选择的是Camer模式 则就需要一个uicamera摄像机
uicamera = Canvas.transform.Find("Camera").GetComponent<Camera>();
worldPosition = new Vector3(transform.position.x, transform.position.y + UIHeight, transform.position.z);
}
private void Update()
{
Vector2 position = RectTransformUtility.WorldToScreenPoint(Camera.main,worldPosition);
//如果canvas选择的是Camer模式 则需要下面这句 如果overlay则不需要-------------
position = uicamera.ScreenToWorldPoint(position);
//--------------------------------------------------------------------------------
Vector2 pos2= Canvas.InverseTransformPoint(position);
bloodSlider.GetComponent<RectTransform>().anchoredPosition = pos2;
}