您的位置:首页 > 产品设计 > UI/UE

世界坐标转到UGUI坐标

2016-05-26 11:06 399 查看
尝试了几个版本都不对,下面俩是正确的。
public static Vector3 WorldToUI(Camera camera,Vector3 pos){
CanvasScaler scaler = GameObject.Find("UIRoot").GetComponent<CanvasScaler>();

float resolutionX = scaler.referenceResolution.x;
float resolutionY = scaler.referenceResolution.y;

Vector3 viewportPos = camera.WorldToViewportPoint(pos);

Vector3 uiPos = new Vector3(viewportPos.x * resolutionX - resolutionX * 0.5f,
viewportPos.y * resolutionY - resolutionY * 0.5f,0);

return uiPos;
}
public static Vector2 WorldToUIPoint(Transform worldGo)
{
Vector2 pos;
RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas.transform as RectTransform,
gameCamera.WorldToScreenPoint(worldGo.transform.position), canvas.worldCamera, out pos);
RectTransform rect = transform.transform as RectTransform;
return pos;
}











                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: