Unity编程标准导引-3.3 Transform

发布时间:2020-08-01 06:40:16 作者:jjjssswww
来源:网络 阅读:533

每个游戏对象(GameObject),其存在于游戏世界,都有一个位置、朝向、大小等基本定位信息;其存于Hierarchy面板,也存在与其他GameObject的相对关系,如父子关系、兄弟关系。Unity中使用Transform来描述和操作这些属性。
  Transform的字面理解就是“变换”的意思,所有的GameObject,当其被创建完成之后,均自动创建了这样一个变换组件,你不需要手动创建这个组件,而且无法删除此组件。
接下来,我们将变换组件的主要属性和功能一一进行解释。

3.3.1、层次相关的属性和方法


层次面板

3.3.2、变换相关的属性和方法

  这里所说的变换,就是指所处的位置、旋转(朝向)、缩放(大小)等信息。
  Unity下的单位是米,比如你新建一个Cube,那么它默认的尺寸是1x1x1的尺寸,那么我们想要设置这个Cube到需要的尺寸,只要修改它的Trasform下的Scale三维向量参数即可,它代表了在1x1x1这个基础上所进行的缩放。
  那些从外部导入的三维模型对象,它本身就带有一个局部的坐标系,和这个三维对象相对此局部坐标系的尺寸和位置。若要修改它的尺寸,则是基于此对象在其导入的局部坐标系中的尺寸和位置为基础,进行相应的缩放。
  由于一棵树代表了很多个层次的存在,每个节点均有自己的缩放、旋转、位置等信息。而且子节点的变换状态会跟随父节点变换状态的变化而改变,因此Unity中存在局部坐标和全局坐标的概念。局部坐标是指其相对直接父节点的变换信息,而全局坐标是指当前节点叠加了所有父节点的累积变换之后的状态结果。
  接下来详细了解变换相关的属性和方法。

通过以上属性看出,都每个变换属性都有局部和全局之分。位置和缩放比较容易理解。不过缩放有两种表现形式,一种是欧拉角,一种是四元数,实际上四元数也就是使用欧拉角在进行计算。对于这部分数学不熟悉的同学不必紧张,我们不需要详细了解四元数的原理,只要学会使用即可。后续的章节中我们会慢慢熟悉四元数的一些用法,而对于欧拉角,我们只要简单知道其概念即可:欧拉角是用相对Z、X、Y轴旋转一定的度数来表示旋转的一种方法,请记住它是按照先Z、再X、再Y这个顺序进行旋转的。
  Unity文档上讲到,如果你对于欧拉角不是很熟悉,就不要使用它,四元数可以满足你的要求了。而实际上我们对于简单一些旋转计算,使用欧拉角是更方便的,速度也更快,比如,我们只需要某个物体相对其父节点围绕X、Y、Z中的单一轴进行旋转,此时文档相对简单,我们可以使用欧拉角进行处理,稍微复杂一点的情况,后面的四元数章节在做解释。
  另外需要注意几点:
  1、Vector、Quaternion 都是结构体,通过localRotation、position等以上函数获取的结果都是存在一个结构体中的,此时的返回结果是存在单独开辟的新内存中的,因此对其直接修改不能影响其原有数值,我们必须以localRotation=Vector这种形式对其赋值,让其进行函数内进行实际赋值操作。
  2、Transform也是一个组件,尽管每个GameObject类中都有transform这个成员,但其内部实现依然是getComponent的函数调用,而这种函数调用是比较耗时的,考虑到频繁需要对Transform进行操作,因此,我们应该在脚本的初始化过程中获取一个Transform引用并保留下来,以便后续调用而避免频繁使用到getComponent。这也是上一节代码中我们这样做的目的。

本文为博主原创文章,欢迎转载。请保留博主链接http://blog.csdn.net/andrewfan


推荐阅读:
  1. Unity3D学习笔记(二)Unity的JavaScript
  2. unity中射线碰撞检测总结

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

游戏 信息 而且

上一篇:CDB/PDB深入学习

下一篇:黑马程序员——API篇

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》