首先拿到画布的RectTransfrom以及主摄像机的引用。
public RectTransform canvasRectTransform;
public Camera mainCamera;
先将世界坐标转换为屏幕坐标,再将它变换到以屏幕中心为原点,最后根据画布大小进行缩放。
// 将世界坐标转换为Ugui坐标
public static Vector2 WorldToUgui(Vector3 position)
{
Vector2 screenPoint = mainCamera.WorldToScreenPoint(position);//世界坐标转换为屏幕坐标
Vector2 screenSize = new Vector2(Screen.width, Screen.height);
screenPoint -= screenSize/2;//将屏幕坐标变换为以屏幕中心为原点
Vector2 anchorPos = screenPoint / screenSize * canvasRectTransform.sizeDelta;//缩放得到UGUI坐标
return anchorPos;
}
这样就可实现UI上的血条跟随人物移动这些效果了
