天天看点

Unity中世界坐标到UGUI坐标的转换(自适应分辨率)

首先拿到画布的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上的血条跟随人物移动这些效果了

Unity中世界坐标到UGUI坐标的转换(自适应分辨率)

继续阅读