/// <summary>
/// 转换场景坐标->UI坐标(场景主摄像机和UI摄像机不一致时)
/// </summary>
/// <param name="sourcePos">场景物体坐标</param>
/// <param name="targetUIParent">目标UI父级</param>
/// <param name="mainCamera">场景相机</param>
/// <param name="uiCamera">UI相机</param>
/// <returns></returns>
public static Vector2 ConvertAnchoredPosFromScene(Vector3 sourcePos, RectTransform targetUIParent, Camera mainCamera, Camera uiCamera)
{
Vector2 sourceScreenPos = mainCamera.WorldToScreenPoint(sourcePos);
bool isSuccess = RectTransformUtility.ScreenPointToLocalPointInRectangle(targetUIParent, sourceScreenPos, uiCamera, out var anchoredPos);
return anchoredPos;
}
/// <summary>
/// UI物体坐标转场景坐标
/// </summary>
/// <param name="targetPos"></param>
/// <param name="uiCamera"></param>
/// <param name="canvas"></param>
/// <returns></returns>
public static Vector3 ConverScreenPos(Vector3 targetPos, Canvas canvas, GameObject obj = null)
{
Vector3 UIWorldPos = targetPos;
Vector3 m_ProjPoint = canvas.transform.localToWorldMatrix.MultiplyPoint(UIWorldPos);
return m_ProjPoint;
}
/// <summary>
/// 屏幕坐标转UI坐标
/// </summary>
public static Vector2 ScreenConvertUI(RectTransform targetUIParent,Vector2 sourceScreenPos,Camera uiCamera)
{
RectTransformUtility.ScreenPointToLocalPointInRectangle(targetUIParent, sourceScreenPos, uiCamera, out Vector2 anchoredPos);
return anchoredPos;
}
unity UI坐标转场景坐标,场景坐标转UI坐标
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- Vector2 pos;RectTransformUtility.ScreenPointToLocalPointI...
- unityEngine.AI if(Input.GetMouseButton(0)) { RaycastHithi...
- 经常会遇到将ui元素的位置对应到某个世界坐标位置的需求,网上看了些解决办法,感觉太过复杂,也试过直接用Camera...
- 一般用在ui上比较多。要让ui悬浮在物体上方,需要将物体坐标转换为ui坐标。https://blog.csdn.n...
- 一直没太搞懂这个方法,但是最近又要使用,网上又查找不到相关的资料。 官方文档感觉根本没描述清楚,只有自己慢慢尝试。...