using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TransformationUtil {
static public Camera KUICamera;
/// <summary>
/// 世界转UI坐标
/// </summary>
/// <param name="parent"></param>
/// <param name="v3"></param>
/// <param name=""></param>
/// <returns></returns>
static public bool Transformation_WordToUI(RectTransform parent, Vector3 v3,Camera rendeCamera, out Vector2 v2)
{
v2 = Vector2.zero;
Vector2 pos = rendeCamera.WorldToScreenPoint(v3);
Transformation_ScreenToUI(parent, pos, out v2);
return true;
}
/// <summary>
/// 屏幕坐标转UI坐标
/// </summary>
/// <param name="parent"></param>
/// <param name="v3"></param>
/// <param name=""></param>
/// <returns></returns>
static public bool Transformation_ScreenToUI(RectTransform parent, Vector3 v3, out Vector2 v2)
{
if (KUICamera == null) {
KUICamera = GameObject.Find("UICamera").GetComponent<Camera>();
}
v2 = Vector2.zero;
RectTransformUtility.ScreenPointToLocalPointInRectangle(parent, v3, KUICamera, out v2);
return true;
}
/// <summary>
/// UI坐标转屏幕坐标
/// </summary>
/// <param name="v2">UI世界坐标</param>
/// <param name="outV2"></param>
/// <returns></returns>
static public Vector3 Transformation_UIToScreen(Vector2 v2)
{
if (KUICamera == null) {
KUICamera = GameObject.Find("UICamera").GetComponent<Camera>();
}
float x = KUICamera.WorldToScreenPoint(v2).x;
float y = KUICamera.WorldToScreenPoint(v2).y;
return new Vector3(x, y, 0);
}
/// <summary>
/// UI坐标转世界坐标
/// </summary>
/// <param name="v2">要转换的UI坐标</param>
/// <param name="v3GoZ">要变幻的3D物体的Z坐标</param>
/// <returns></returns>
static public Vector3 Transformation_UIToWord(Vector2 v2, Camera rendeCamera, float z)
{
Vector3 uiV3 = Transformation_UIToScreen(v2);
uiV3.z = z;
uiV3 = rendeCamera.ScreenToWorldPoint(uiV3);
return uiV3;
}
}