Unity --- Transform类

1.一个很有意思的事实是Transform类不仅用来管理游戏物体的位置缩放旋转,还用来管理游戏物体的父物体与子物体之间的关系

当游戏物体A的trasnform类a是游戏物体B的transform类b的父类的话,游戏物体A就是游戏物体B的父物体

2.如何访问脚本当前挂载的游戏物体的transform类呢 --- 在脚本中可以直接通过transform这个类名访问

position属性记录的是当前游戏物体在世界坐标系中的的坐标 

游戏物体的transform类中的 localposition 这个属性:

1.在当前游戏物体没有父物体的时候,其值与position中的相对于世界坐标系下的坐标相同

2.当当前游戏物体有父物体的时候,其值是当前游戏物体相对于其父物体的本地坐标系的坐标

获取旋转也同理,一个是相对于世界坐标系的旋转,一个是相对于父物体的本地坐标系的旋转(如果有的话) 

ps:调用上面这两个属性得到的旋转是以四元数形式(四个参数)来表示的(当然要用四元数对象来接收)

也有获取以欧拉角形式表示的旋转(三个参数)

 也有相对于世界坐标系和相对于父物体的本地坐标系的两个对应属性

缩放只有一个相对于父物体的本地坐标系的缩放(如果没有父物体的话就是相对于世界坐标系的缩放) 

3.在Unity中一个物体都有x,y,z三个轴显示,我们一般默认Z轴是游戏物体的前方轴(forward),y轴是游戏物体的上方轴(up),红色的轴是游戏物体的右方轴(right)

 

 forward属性是一个向量,这个向量是以1.游戏物体的本地坐标系的Z轴的方向来作为自己的方向2.处于世界坐标系中的单位向量

up和right同理


4.transoform类中常用的一些方法

1.让游戏物体看向某一个坐标点 --- 注意这个方法调用一次之后能够让游戏物体看向一个坐标点,如果游戏物体转向了话,就需要我们再一次调用这个方法

如果我们想让游戏物体时时刻刻看向某个坐标点的话,就需要我们把这个方法放到Updata中,每一帧调用一次,这样子就能在刷新的画面中保证我们的游戏物体时时刻刻都是看向我们给定的坐标点的

注意这里的看向某个点是指游戏物体的本地坐标系的Z轴会指向这个点

让一个游戏物体旋转的时候我们需要给它指定一个旋转的轴 ,这个轴以向量形式表示,

且这个向量是在游戏物体的本地坐标系中求出的,该向量的起点是这个本地坐标系的原点

这个方法的功能是让我们的游戏物体绕某个点的本地坐标系中的某个向量旋转

总共有三个参数 --- 1.我们要绕的点的坐标 ; 2.过我们要绕的点的一个旋转轴,这个旋转轴是在我们要绕的点的本地坐标系中的一个向量(这个向量的起点坐标就是我们要绕的点,而我们要绕的点就是本地坐标系中的原点); 3.绕旋转旋转的角度

首先给定一个Vector3参数,这个参数起到两个作用,一个是作为游戏物体本地坐标系中的一个向量来决定游戏物体的移动方向,另一个则是作为调用一次该方法后,沿着给定方向游戏物体的移动距离


transform类管理游戏物体的父子关系

 1.获取当前游戏物体的父物体

注意下面这个索引的最终属性是gameObject,其类型是GameObject,也就是说我们找到的是一个游戏物体对象!!

--- 首先通过transform对象调用parent属性,返回一个Transform类对象,这个对象是指向第一个transform对象对应的游戏物体的父物体的tranform的,然后再对 这个transform对象索引调用gameObject属性,返回一个游戏物体对象,这个游戏物体对象指向的是父物体

2.childCount --- 获取当前游戏物体的子物体的个数

 

 在Unity中一个父物体可以有多个子物体,但是一个子物体只能有一个父物体(类的继承)

子物体也能创建自己的子物体来成为父物体

 

 调用这个放啊后会使得游戏物体与其所有子物体接触父子关系

通过transform获取子物体的tranform

 第一个是传我们要获取的子物体的transform,如果想要获取子物体游戏对象的话还需要再

trans后面加一个 . gameObject

第二个方法则是通过索引获取对应索引的子物体的transform --- 索引从0开始 

 父物体的transform变量名(再脚本中写代码的时候,脚本所挂载的游戏对象的transform变量可直接用transform表示)+ 点操作符 + GetChill(获取父物体的子物体的transform变量)

上面的子物体的索引由上到下是0,1,2

(PS:一个父物体A下有一个子物体B,这个子物体下又有一个其自身的子物体C,问C是不是A的子物体? -- 答: 不是

上面两个find和getchild都只能找属于点操作符前面的父物体的子物体,找不到就返回Null

是的话返回ture,不是返回false 

这个方法可以将括号内的transform对象对应的游戏物体设置为点操作符前面的transform对象对应的游戏物体的父物体 

猜你喜欢

转载自blog.csdn.net/qq_51947882/article/details/126481986
今日推荐