Unity3D世界坐标和局部坐标的关系,之间转换浅谈

             Unity3D世界坐标和局部坐标的关系,之间转换浅谈


目录

1、博文介绍

2、内容

(1) 相对性

(2)世界坐标

(3)局部坐标

(4)局部坐标转世界坐标

(5)世界坐标转局部坐标

3、推送

4、结语


1、博文介绍

浅谈Unity3D内的世界坐标和局部坐标,以及两者之间的相互转换。


2、内容

(1) 相对性

首先我们要理解的最重要的一点就是,位置的相对性,只有相互对照我们才能判断位置

(2)世界坐标

世界坐标是在最高层级下的物体参照Unity3D内的世界坐标系所对应出来的位置,唯一。处于最高层级的物体,其Inspector面板内的position即为世界坐标,在Transform的API中有position属性,该属性可以直接获取物体的世界坐标,无论处于任何层级之内,获取的均是该物体的唯一世界坐标。

(3)局部坐标

以任意物体作为参考系,而不再是以世界零点作为参考系所获得的位置信息,即为局部坐标,例如:物体A,其子物体B,B在Inspector面板内的position信息即为B以A作为零点所得到的局部坐标,所以我们可以得到一个信息,B若不再是A的子物体,而是和A同层级,那么B的坐标就应该等于之前的局部坐标+A的坐标,如果A是世界坐标内的物体,那么所得结果就是B的世界坐标。

(4)局部坐标转世界坐标

由(1)可知,可直接通过transform.position获取物体世界坐标

由(3)可知,若物体A的父级B为世界坐标系内物体,物体A的世界坐标 = 物体A的局部坐标+B的世界坐标。

Transform的API提供一个方法TransformPoint,可以获取物体世界坐标相对于任意一点的位置,所以下面vect的值就是cube的世界坐标。

var vect = cube.TransformPoint(new Vector3(0,0,0));

(5)世界坐标转局部坐标

Transform的API提供一个方法InverseTransformPoint,可以获得任意物体相对于另一个物体的局部坐标,以下代码中,所得值vect即为若cube作为fat的子物体时的局部坐标。 

public Transform fat;

public Transform cube;

var vect = fat.InverseTransformPoint(cube.transform.position);

3、推送

博主Github:https://github.com/KingSun5


4、结语

        若是觉得博主的文章写的不错,不妨关注一下博主,点赞一下博文,另博主能力有限,若文中有出现什么错误的地方,欢迎各位评论指摘。

       QQ交流群:806091680(Chinar)

       该群为CSDN博主Chinar所创,推荐一下!我也在群里!

       本文属于原创文章,转载请著名作者出处并置顶!!!!

猜你喜欢

转载自blog.csdn.net/Mr_Sun88/article/details/98123268
今日推荐