Unity屏幕坐标系UGUI坐标世界坐标三种坐标系之间的转换以及localToGlobal。。。

更新时间:2023-07-14 07:40:15 阅读: 评论:0

Unity屏幕坐标系UGUI坐标世界坐标三种坐标系之间的转换以及localToGlobal。
。。
⾸先要明⽩⼀个概念
UGUI的坐标系 ,是以屏幕中⼼为原点 就是说 什么都不动 ⼀上来设置0 0点 在最正中间
⽽Screen坐标系,以屏幕左下⾓为原点
⽐如你有⼀个3d物体 你想给他加⼀个⾎条 并且这个⾎条在ugui⾥的层级特别深 那么可以这么整
var screenPoint = mainCamera.WorldToScreenPoint(ansform.position);
司法公正var localPosition =new Vector2();信守承诺的意思
UnityEngine.RectTransformUtility.ScreenPointToLocalPointInRectangle(ansform.parent as RectTransform,
screenPoint, canvas.worldCamera,out localPosition);
ansform.localPosition = localPosition;
Camera.WorldToScreenPoint
这个是把你的position 也就是 世界坐标系 转换为屏幕坐标
然后调⽤ ScreenPointToLocalPointInRectangle 就是 localPosition 坐标了
有两个类有 WorldToScreenPoint ⽅法
Camera 类⾥有这个⽅法 返回的是 Vector3
RectTransformUtility ⾥返回的是 Vector2
如果以前你接触过h5游戏引擎 laya egret 等 那么⼀定对 globalToLocal 或者 localToGlobal ⽅法⾮常熟悉
那么下⾯的满⾜你
记住 摄像头是 ui摄像头也就是canvas⽤的那个
Vector2 localToGlobal(Transform transform , Vector2 vec2)
{
var screenPoint = RectTransformUtility.WorldToScreenPoint(canvas.worldCamera, transform.position);
宇文化及简介var GlobalPosition =new Vector2();
RectTransformUtility.ansform as RectTransform,
screenPoint, canvas.worldCamera,out GlobalPosition);
return GlobalPosition + vec2;
}
么意思Vector2 globalToLocal(Transform transform , Vector2 vec2 )
{
var screenPoint = RectTransformUtility.WorldToScreenPoint(canvas.worldCamera, ansform.position);
var localPosition =new Vector2();
游戏作文UnityEngine.RectTransformUtility.ScreenPointToLocalPointInRectangle(transform as RectTransform,
苹果怎么省电
screenPoint, canvas.worldCamera,out localPosition);
return localPosition + vec2;
}
//转换到任意Transform
Vector2 localToRectTransform(Transform transform, Vector2 v, Transform target)
{
var screenPoint = RectTransformUtility.WorldToScreenPoint(canvas.worldCamera, transform.position);
var res =new Vector2();
钱英语怎么写
RectTransformUtility.ScreenPointToLocalPointInRectangle(target as RectTransform, screenPoint,
canvas.worldCamera,out res);
return res + v;
}
顺便⼀提
img9放到canvas的根上 并设置为以左下⾓为原点
这时候
ansform.localPosition = new Vector2(0, 0);
那么图⽚还是在canvas的正中间
因为 localPosition 不在乎你设置的 Anchors 在哪
如果你希望和编辑器⾥显⽰的效果⼀样 那么需要⽤anchoredPosition
Transform.anchoredPosition = new Vector2(0, 0);
顺从的反义词那么img9就乖乖到屏幕左下⾓去了

本文发布于:2023-07-14 07:40:15,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1080895.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:坐标系   屏幕   游戏   转换   摄像头   设置   根上
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图