少有人走的路

勇哥的工业自动化技术网站

unity3d学习(八)UI组件之Transform

勇哥注:

本节主要解决下面两个问题:
这里的X,Y,Z是个什么单位呢?
父物体子物体的父子关系是靠什么来维系的呢?


Transform组件用来做位移、旋转、缩放。

image.png


(一)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,及至找到父级游戏对象。

image.png



//获取位置

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);


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接

Powered By Z-BlogPHP 1.7.3

Copyright www.skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864