二、坐标:2、本地坐标和世界坐标

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二、坐标:2、本地坐标和世界坐标相关的知识,希望对你有一定的参考价值。

参考技术A transform.TransformPoint()
这个方法的返回值就是Vector3类型的世界坐标,transform就是相对的物体,括号里的就是相对这个transform的本地坐标。

场景中A的父物体和B的父物体并不是同一个物体,但是他们有可能需要进行坐标上的交互,那么此时需要用到
RectTransformUtility.ScreenPointToLocalPointInRectangle() 这个方法。
用法:
Vector2 ui2ScreenPos = Camera.main.WorldToScreenPoint(ui2.position);
Vector2 localPos;
bool isSucess = RectTransformUtility.ScreenPointToLocalPointInRectangle(uiParent1, ui2ScreenPos, Camera.main, out localPos);
得到的localPos就是ui2.position相对于uiParent1的屏幕坐标,这样uiParent下的物体就可以用这个坐标进行交互。
这个方法体一共有四个参数,下面分别讲一下:
参数一:需要进行位置改变的ui物体的父物体的RectTransform组件
参数二:参照物体的屏幕坐标
参数三:相机,一般为主相机,或者特殊需求换相机也可
参数四:接收返回值得Vector2类型,这个值就是需要进行位置改变的ui物体的相对坐标
返回值:bool类型,为true时证明转换成功
需要注意的是:这个相机只是针对worldspace和camera模式,如果用的是overlay模式,第三个参数直接给null即可。
这个方法典型应用,是用在摇杆制作上。但是这里需要注意到的是,这里得到的是UI体系的坐标,也就是屏幕坐标。屏幕坐标以像素来定义的,屏幕的左下角为(0,0),右    上角为(Screen.width, Screen.height),z轴的坐标是相机的世界坐标中z轴坐标的负值。相机如果没给对,则有可能达不到预期的效果。

unity3d世界坐标系和本地坐标系

transform.Translate(Vector3.forware);//向着自己坐标前方
transform.Translate(Vector3.forware,Space.World);//向着世界坐标前方

举例子加深印象:有两个Cube

Cube1处于原点,Cube2在Cube1右边且角度有所不同。

此时分别调用如下代码:

Debug.Log(name+"--"+Vector3.forward+":"+transform.forward);

输出结果是:

Cube2--(0.0, 0.0, 1.0):(0.5, -0.7, 0.5)
UnityEngine.Debug:Log(Object)
Zuobiaoxi:Update() (at Assets/scripts/Zuobiaoxi.cs:16)

Cube1--(0.0, 0.0, 1.0):(0.0, 0.0, 1.0)
UnityEngine.Debug:Log(Object)
Zuobiaoxi:Update() (at Assets/scripts/Zuobiaoxi.cs:16)

可以看出,Vector3.forward是本地坐标系的变化,而transform.forward获取的是世界坐标系的变化。

 

所以教程内是这样说的:

if (Input.GetKeyDown (KeyCode.W)) {
    //按照本地坐标系进行移动
    transform.Translate(Vector3.forward);
    //按照世界坐标系进行移动
    transform.position+=transform.forward;
}

常用的是:

transform.Translate(Vector3.forward);

 

以上是关于二、坐标:2、本地坐标和世界坐标的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D3D 物体概念 ② ( 空物体概念 | 创建空物体 | 利用空物体管理多个子节点 | 世界坐标系和本地坐标系操作模式 | 切换坐标系操作模式 | 轴心和几何中心模式 )

Unity 本地坐标到世界坐标,世界坐标到本地坐标

unity3d世界坐标系和本地坐标系

Unity学习笔记—本地坐标转世界坐标

关于Unity中物体分别在本地和世界坐标系对应方向的移动

ocos2d-x 3.0坐标系详解--透彻篇 ---- convertToWorldSpace:把基于当前节点的本地坐标系下的坐标转换到世界坐标系中。