勇哥注:
本节主要解决下面两个问题:
这里的X,Y,Z是个什么单位呢?
父物体子物体的父子关系是靠什么来维系的呢?
Transform组件用来做位移、旋转、缩放。
(一)Transform的单位
在Unity中,一个对象的Transform组件的X方向数值代表的是在世界空间或本地空间中的位置或移动距离,
其单位通常是米(m)。
这并不是像素单位,而是Unity使用的三维空间中的标准度量单位。
具体来说,Transform组件的position属性表示对象在世界空间中的位置,它是一个Vector3类型的值,
包含x、y、z三个分量,分别对应三维空间中的三个轴。
当你修改Transform的X方向数值时,你实际上是在改变对象在世界空间中沿X轴的位置。
此外,Unity还提供了本地空间(Local Space)和世界空间(World Space)之间的转换方法。
本地空间是相对于父对象的空间,而世界空间是全局的空间。
你可以使用Transform组件的localPosition属性来获取或设置对象在本地空间中的位置,
以及使用localToWorldMatrix和worldToLocalMatrix矩阵来进行本地空间和世界空间之间的转换。
(二)父子关系是靠什么维持的?
场景中对象的父子关系是由Transform组件来维持的。
这意味着你可以通过游戏物体2的Transform找到父对象的Transform,及至找到父级游戏对象。
//获取位置
Debug.Log(transform.position);
transform.localPosition;
//获取旋转
transform.rotation;
transform.localRotation;
transform.eulerAngles;
transform.localEuleAngles;
//获取缩放
transform.localScale;
//向量
transform.forward;
transform.right;
transform.up;
//可以通过Transform来查找层级中的对象。例如从子对象找到父对象,或者反过来。
//获取父物体
transfrom.Parent.gameObject
//子物体个数
transform.childCount;
//解除与子物体的父子关系
transform.DetachChildren();
//获取子物体
Transform trans= transform.find("Child");
方法2:transform.GetChild(0);
//判断一个物体是不是另外一个物体的子物体
bool res=trans.IsChildOf(transform);
//设置为父物体,如果这两个物体是毫无关系的,就可以指定为父子关系
trans.SetParent(transform);

