u3d 在世界u3d修改模型坐标轴怎么让字体显示

unity中世界坐标与局部坐标 - CSDN博客
unity中世界坐标与局部坐标
& & & &本人学生一枚,刚接触unity3D,若有理解得不对的地方,还望各路大神不吝赐教~
& & & &unity中的坐标系统包括世界坐标(World Space),屏幕坐标(Screen Space),视口坐标(View Space)以及GUI坐标系统。
& & & &世界坐标(World Space)
& & & &场景中添加的对象,它们是以世界坐标显示在场景中,可以通过代码transform.position获得该对象的世界坐标,那么我们在检视面板(Inspector)中看到的Position的值在对象没有父物体时,这个值和transform.position得到的结果一致的,若该对象有父物体,那么检视面板中(Inspector)看到的即为相对于父物体的相对坐标位置,这样通过transform.position得到的值自然就不一样了。总之,通过transform.position得到的都是对象的世界坐标。在对象存在父物体的情况下,若想要得到该对象在检视面板(Inspector)中的值,可以通过transform.Localposition得到。
& & & 屏幕坐标(Screen Space)
& & & 屏幕坐标是通过像素来定义的,屏幕坐标的坐标系以屏幕左下角为(0,0)点,右上角为(Screen.width,Screen.height),屏幕坐标为3维坐标,z的大小由相机的世界位置来定义。通过Input.mousePosition得到的是屏幕坐标,屏幕坐标的数值只与屏幕的大小有关,跟分辨率没有关系。
& & & 视口坐标(View Space)
& & &视口坐标标准化后的屏幕坐标,它的坐标原点同样是左下角为(0,0)点,只不过右上角为(1,1)点,若对象处在场景的正中间,则对象的视口坐标为(0.5,0.5),与屏幕坐标一样,视口坐标也是一个3维的,它的z方向的数值由相机的世界位置来决定。
& & & GUI坐标系
& & & GUI坐标系主要在通过OnGUI方法绘制屏幕UI界面时运用较多,GUI坐标系是一个2维坐标系,与屏幕空间类似,所表示的范围也是整个屏幕空间范围,只不过GUI坐标的坐标原点在左上角,即左上角为(0,0)点,右下角为(Screen.width,Screen.height)。
& & & &坐标之间的转换
& & & &世界坐标通过transform.position获得
& & & &局部坐标通过transform.Localposition获得
& & & &世界坐标与屏幕坐标之间的转换
& & & & Camera.main.ScreenToWorldPoint(Vector 3) &——屏幕坐标转换到世界坐标,其中的main为主相机,当然也可以为场景中其他相机
& & & & Camera.main.WorldToScreenPoint(transform.position)——世界坐标转换到屏幕坐标 ,其中的main为主相机,当然也可以为场景中其他相机。这里附带一个鼠标拖拽物体的代码,其中主要就是世界坐标与屏幕坐标之间转换
private&Vector3&_vec3TargetScreenS//&目标物体的屏幕空间坐标&&&private&Vector3&_vec3TargetWorldS//&目标物体的世界空间坐标&&&private&Transform&_//&目标物体的空间变换组件&&&private&Vector3&_vec3MouseScreenS//&鼠标的屏幕空间坐标&&&private&Vector3&_vec3O//&偏移&&
void&Awake(&)&{&_trans&=&&}&&&&&&&IEnumerator&OnMouseDown(&)&&&&&&&&&{&&&&&&&&&&//&把目标物体的世界空间坐标转换到它自身的屏幕空间坐标&&&&&& & &_vec3TargetScreenSpace&=&Camera.main.WorldToScreenPoint(_trans.position);&&&&&&&&&//&存储鼠标的屏幕空间坐标(Z值使用目标物体的屏幕空间坐标)&&&&&& & &_vec3MouseScreenSpace&=&new&Vector3(Input.mousePosition.x,&Input.mousePosition.y,&_vec3TargetScreenSpace.z);&&&&&&&&//&计算目标物体与鼠标物体在世界空间中的偏移量&&&&&& & &_vec3Offset&=&_trans.position&-&Camera.main.ScreenToWorldPoint(_vec3MouseScreenSpace);&&&&&&&&//&鼠标左键按下&&&&&&&&&&while&(&Input.GetMouseButton(0)&)&{&&&&&&&//&存储鼠标的屏幕空间坐标(Z值使用目标物体的屏幕空间坐标)&&&&& & & & & & & & & & & &_vec3MouseScreenSpace&=&new&Vector3(Input.mousePosition.x,&Input.mousePosition.y,&_vec3TargetScreenSpace.z);&&&&&&&//&把鼠标的屏幕空间坐标转换到世界空间坐标(Z值使用目标物体的屏幕空间坐标),加上偏移量,以此作为目标物体的世界空间坐标&&&&& _vec3TargetWorldSpace&=&Camera.main.ScreenToWorldPoint(_vec3MouseScreenSpace)&+&_vec3O&&&&&&&&&&&&&&&&&&&&&//&更新目标物体的世界空间坐标&&&&&& &_trans.position&=&_vec3TargetWorldS&&&&&&&//&等待固定更新&&&&&& &yield&return&new&WaitForFixedUpdate();&&&&&&&&&&&&&&}&&&&&&&} &
& & & & &屏幕坐标与视口坐标之间的转换
& & & & &Camera.ScreenToViewportPoint()方法将屏幕坐标转化为视口坐标
& & & & &屏幕坐标与视口坐标之间的转换
& & & & &屏幕坐标与视口坐标只有原点的选定不同,数值范围是一致的,这里借用一下http://blog.csdn.net/qinyuanpei/article/details/这篇博客中提到的方法来进行坐标之间的转换
& & & & &private Vector2 ScreenToGUIPoint(Vector2 v)
& & & & & {
& & & & & & & & return new Vector2(v.x,Screen.heigth-v.y)
& & & & & &}&
& & & & & 这个方法同样可以将GUI坐标转换为屏幕坐标而不用修改任何地方。
& & & & &&
& & & & & 就写这么多了,今天在自己的小程序中遇到了关于几种坐标之间的转换问题,查看相关的博客文章,问题得以解决,将所学所得拿出来与大家分享,关于坐标的转换,大家也可以参考http://blog.csdn.net/qinyuanpei/article/details/这篇文章。若有不对的地方,还望不吝赐教。 & & & &
本文已收录于以下专栏:
相关文章推荐
Unity有世界坐标、本地坐标(localposition)、UI坐标(这个我好像还没怎么用)、屏幕坐标等等,之前的一个项目需要考虑世界坐标转换为本地坐标,后来经过一番尝试,找到了一种比较取巧的方法。...
public class TEST : MonoBehaviour {
void Start ()
Debug.Log(transform.p...
Vector3.up指的是世界坐标中的”上方向”,即(0,1,0)transform.up指的是当前物体的”上方向” 在世界坐标中的表示transform.TransformDirection(Vec...
Unity学习笔记(1)—本地坐标转世界坐标先简单介绍一下我是一个程序员(菜鸟程序员),用C#开发,在开发的过程中会遇到一些问题,当时解决了但是在遇到可能还会在犯,所以启发我做这样一个学习笔记系列,一...
Unity3D中的四种坐标系
在谈unity各种坐标系之前,我一直很好奇unity为什么要有这么多坐标系搞的很麻烦,其实unity这么坐标系是为了解决麻烦,试想计算你和你同桌的位置,要先得到你们各自在世界中的位置,然后在计算相对位...
unity3d 参考坐标系
      参考坐标系(Reference Coordinate System)列表是让你指定用于变换(移动move、旋转rotate和缩放scale)的坐标系。选项包括...
unity中有关于鼠标位置的函数,Input.mousePosition。但不得不说,这个函数不到位,可以用一个print函数输出一下这个坐标会发现,只有X,Y值在改变,Z值没有发生变化,并且在屏幕的...
主要的接口函数为以下四个:
convertToNodeSpace();
//转换成局部坐标
convertToNodeSpaceAR();
Unity 分为世界坐标和局部坐标。局部坐标是相对于父亲来说的,而世界坐标是对于整个游戏来说的。
绝对坐标:PickUps的坐标为世界坐标(绝对坐标)
相对坐标:每一个PickUp都有一个坐标,这...
他的最新文章
讲师:宋宝华
讲师:何宇健
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)unity3d 设置Text的文字内容和位置 - CSDN博客
unity3d 设置Text的文字内容和位置
tempQie2.transform.SetParent(GameObject.Find(&Canvas&).transform);
Text text = tempQie2.GetComponent&Text&();
text.text = contentS
text.fontSize = fontS
RectTransform rt = tempQie2.GetComponent&RectTransform&();
rt.sizeDelta = new Vector2(200, 300);
rt.transform.position = new Vector2(10, 10);
rt.transform.Rotate(new Vector3(0, 0, 45));
本文已收录于以下专栏:
相关文章推荐
首先,在NGUI中,创建一个UIlabel或者sprite,然后在3D对象上面,需要显示文字的位置,创建一个空物体,获取该空物体的位置,将UI文字,显示在该位置
通过控制显示位置到相机的距离,对ui...
代码也不复杂,直接上好了
using UnityE
using System.C
public class GUIPrintMachine : M...
感谢:/thread-.html
void OnGUI()
GUIStyle bb=new GUIStyle();
bb.norma...
这种文本用于GUI元素和文本网格可以结合多种字体类型和大小。 GUIStyle, GUIText 和 TextMesh类都有富文本设置,能指示unity寻找文本内含有的标记标签。Dubug.Log也可...
Text作为UGUI最基础的控件以及最常用的控件,它在项目中的应用绝对可以算是最多的,任何一个UI界面可以说都离不开它,它的基本属性如下:
一、rect transform组件:
/unity/2016-12/Unity-GUI-Extension-Text-Gradient.html
大家知道uGUI中的Text组件默认...
TITLE=&[原创]unity3D学习【功能实现】之五:在图片上显示文字或名字,可更改text mesh& /&
TITLE=&[原创]unity3D学习【功能实现】之...
using System.C
//使用UI-&Text 必须要增加头文件 UnityEngine.UI;
using Unity...
在UGUI的text组件中,没有直接设置颜色的接口,我们可以通过直接在Text内容中指定Color项来设置颜色。
例如我们添加一个Button到游戏中,然后选择Text,输入内容:
他的最新文章
讲师:宋宝华
讲师:何宇健
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)Unity3D的四种坐标系及转换 - 简书
Unity3D的四种坐标系及转换
1, World Space(世界坐标):
我们在场景中添加物体(如:Cube),他们都是以世界坐标显示在场景中的。transform.position可以获得该位置坐标。
2, Screen Space(屏幕坐标):
以像素来定义的,以屏幕的左下角为(0,0)点,右上角为(Screen.width,Screen.height),Z的位置是以相机的世界单位来衡量的。
注:鼠标位置坐标属于屏幕坐标,Input.mousePosition可以获得该位置坐标,手指触摸屏幕也为屏幕坐标,Input.GetTouch(0).position可以获得单个手指触摸屏幕坐标。
3.ViewPort Space(视口坐标):
视口坐标是标准的和相对于相机的。相机的左下角为(0,0)点,右上角为(1,1)点,Z的位置是以相机的世界单位来衡量的。
4, 绘制GUI界面的坐标系:
这个坐标系与屏幕坐标系相似,不同的是该坐标系以屏幕的左上角为(0,0)点,右下角为(Screen.width,Screen.height)。
【四种坐标系的转换】
1、世界坐标→屏幕坐标:camera.WorldToScreenPoint(transform.position);这样可以将世界坐标转换为屏幕坐标。其中camera为场景中的camera对象。
2、屏幕坐标→视口坐标:camera.ScreenToViewportPoint(Input.GetTouch(0).position);这样可以将屏幕坐标转换为视口坐标。其中camera为场景中的camera对象。
3、视口坐标→屏幕坐标:camera.ViewportToScreenPoint();
4、视口坐标→世界坐标:camera.ViewportToWorldPoint();扫一扫,访问微社区
后使用快捷导航没有帐号?
签到成功!您今天第{todayrank}个签到,签到排名竞争激烈,记得每天都来签到哦!已连续签到:{constant}天,累计签到:{days}天
Unity中的世界坐标和NGUI中的坐标的相互转换
阅读&7911 |
1、将Unity中的世界坐标转换成NGUI中的坐标,代码如下所示:& & public GameObject TargetO&&&&&&&&
//目标物体& & public Camera
&&&&&&&& //世界相机。
&&&&public Camera
guiC&&&&&&&&&& //UI相机
Use this for initialization
&&&&void Start()
&&&&&&&&worldcamera
=NGUITools.FindCameraForLayer(TargetObject.layer);&&&&
//这里是通过物体的层获得相应层上的相机
&&&&&&&&guiCamera
= NGUITools.FindCameraForLayer(this.gameObject.layer);&& //通过脚本所在物体的层获得相应层上的相机
Update is called once per frame
&&&&void Update()
&&&&void LateUpdate()
&&&&&&&&Vector3
worldcamera.WorldToScreenPoint(TargetObject.transform.position);&&&&&&&&
//获取目标物体的屏幕坐标
&&&&&&&&pos
guiCamera.ScreenToWorldPoint(pos);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
//将屏幕坐标转换为UI的世界坐标
&&&&&&&&pos.z
= 0;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
//由于NGUI 2D界面的Z轴都为0
&&&&&&&&transform.position
=new Vector3(pos.x,pos.y,pos.z);&&&&&
//将修改过的坐标赋给UI界面
}2、将NGUI的坐标改为Unity中的世界坐标,代码如下所示:&GameObject targetObject = (GameObject)Instantiate(Resources.Load("Model/"+name));& & & & &Camera worldcamera = NGUITools.FindCameraForLayer(targetObject.layer); & & //这里是通过物体的层获得相应层上的相机& & & & &Camera guiCamera = NGUITools.FindCameraForLayer(obj.layer); & //通过脚本所在物体的层获得相应层上的相机& & & & &if (worldcamera == null || guiCamera == null)& & & & {& & & & & && & & & }& & & & Vector3 pos = guiCamera.WorldToScreenPoint(obj.transform.position); & & & & //获取UI界面的屏幕坐标& & & & pos.z = 1f;//设置为零时转换后的pos全为0,屏幕空间的原因,被坑过的我提醒大家,切记要改!& & & & pos = worldcamera.ScreenToWorldPoint(pos); & & & & & & & & & & & & & & &//将屏幕坐标转换为世界坐标& & & & pos.y = 0f;& & & & targetObject.transform.position = new Vector3(pos.x, pos.y, pos.z); & & &//将修改过的坐标赋给目标物体坐标
作者的其他最新博客
评论 ( 个评论)
恩恩,也可以有其他的用途啊,看个人情况用,嘿嘿..........

我要回帖

更多关于 u3d获取物体坐标 的文章

 

随机推荐