这篇文章将为大家详细讲解有关U3D局部坐标和全局坐标的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
专业公司可以根据自己的需求进行定制,成都网站建设、做网站构思过程中功能建设理应排到主要部位公司成都网站建设、做网站的运用实际效果公司网站制作网站建立与制做的实际意义父子化(摘自官文原文说明)
父子化 (Parenting) 是使用 Unity 时需要理解的最重要的概念之一。当某个游戏对象 (GameObject) 是另一个游戏对象 (GameObject) 的父级 (Parent) 时,子级 (Child) 游戏对象 (GameObject) 会像其父级 (Parent) 一样移动、旋转和缩放。正如您的手臂与躯干相连,转动躯干时,手臂因为与其相连也会移动。任何对象都可以有多个子级,但却只能有一个父级。
您可以通过将层级视图 (Hierarchy View) 的任何游戏对象 (GameObject) 拖到另一个游戏对象上来创建一个父级 (Parent)。此操作会在两个游戏对象 (GameObject) 之间创建一种父子关系。
父子层级视图 (hierarchy) 示例。名称左侧有折叠箭头的游戏对象 (GameObjects) 是父级。
上述示例中,我们认为躯干是手臂的父级而手臂是手的父级。您在 Unity 中制作的场景将包含这些变换层级 (Transform hierarchy)的集合。最上层的父级对象被称为根对象 (Root object)。当您移动、缩放或旋转某个父级对象时,其变换 (Transform) 中的所有变化都会被应用于其子级对象。
值得指出的是任何子级游戏对象 (Child GameObject) 的检视器 (Inspector) 中的变换 (Transform) 值都会相对于父级 (Parent) 的变换 (Transform) 值而显示。这些值又被称局部坐标 (Local Coordinate) 。您可以通过脚本处理访问全局坐标 (Global Coordinate) 和局部坐标 (local coordinate)。
例如:
此时Cube1坐标视为全局部坐标或世界坐标
gameObject.transform.position=new Vector(2,2,0);就可以实现
也可以使用
Vector3 thePosition = transform.TransformPoint(newVector3(2,2,0));
gameObject.transform.position = thePosition;
Transform.TransformPoint 变换位置:变换位置从自身坐标到世界坐标(原文:Transforms position from local space to world space.)
现在给Cube1加个子对象Cube2并使Cube2移动到如图位置
使用gameObject.transform.position=new Vector(2,2,0);将无法如愿;
问题解析:根据红色字内容说明,此时Cube2中的检视器 (Inspector) 的坐标显示的是相对父级Cube1的坐标,所以只能先把自身坐标使用transform.TransformPoint方法转为世界坐标
Vector3 thePosition = transform.TransformPoint(newVector3(2,2.5,0));
gameObject.transform.position = thePosition;
坐标系的转换:
TransformDirection 将一个方向从局部坐标系转换到世界坐标系
InverseTransformDirection 将一个方向从世界坐标系转换到局部坐标系
TransformPoint 将一个点从局部坐标系转换到世界坐标系
InverseTransformPoint 将一个点从世界坐标系转换到局部坐标系
关于“U3D局部坐标和全局坐标的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。