当前位置: 首页 > news >正文

UnityAPI的学习——Transform类

Transform类继承自Component类,并实现了IEnumberable接口。Transform是GameObject必须拥有得一个组件,用来管理所在GameObject对象的坐标位置、选择角度、和大小缩放。
Transform实现了IEnumberable接口,因此可以在程序中使用foreach()方法快速遍历子物体的Transform结构。

Transfrom类实例属性

在Transform类中,涉及的实例属性有 eulerAngles 、forwardr 、hasChanged、localPosition、localToWorldMatrix 、parent 和 worldToLocalMatrix属性

eulerAngles属性:欧拉角

基本语法

public Vector3 eulerAngles{ get; set; }

功能说明 :此属性用于返回或设置GameObject对象的欧拉角
1、在Unity引擎中使用四元数Quaternion来存储和表示GameObject的旋转角度,无论是在Inspector面板中对Rotation设置了数值,还是在脚本中对transform.eulerAngles赋予了数值,程序在编译运行时都会把它们转换成Quaternion类型再计算。
2、只能对transform.eulerAngles进行整体赋值,如transform.eulerAngles=new Vector(1.0f,2.0f,3.0f),不可以对transform.eulerAngles的单独分量进行赋值。
3、transform.eulerAngles.x返回值的范围为[0,90]和[270,360);transform.eulerAngles.y和transform.eulerAngles.z返回值的范围为[0,360)。
4、对transform.eulerAngles进行赋值或获取transform.eulerAngles的值都是相对世界坐标系而言的,若要相对transform的父物体(如果有的话)进行角度的变换则需要使用属性localEulerAngles来设置
5、设在脚本中有代码:transform.eulerAngles=new Vector3(10.0f, 20.0f ,30.0f),则GameObject对象会先沿着z轴旋转30度,再沿着x轴旋转10度,最后再沿着y轴旋转20度。(不同的旋转执行顺序,物体的最终状态是不同的)

forward属性:z轴单位向量

基本语法

public Vector3 forward{get ; set;}

功能说明:此属性用于返回或设置transform自身坐标系中z轴方向的单位向量对应的世界坐标系中的单位向量。transform.forward即为transform.TransformDirection(new Vector3(0.0f , 0.0f ,1.0f))的简化方式。

hasChanged属性:transform组件是否被修改

基本语法

public bool hasChanged{ get; set;}

功能说明
此属性用于判断GameObject对象从上次将此属性设为false以来,其transform组件的属性是否被修改过。
注意:即使transform某个属性修改后的值与修改前的值相同,hasChanged的返回值仍然为true

localPosition属性:局部坐标系位置

基本语法

public Vector3 localPosition{ get; set;  }

功能说明
此属性用于设置或返回GameObject对象在局部坐标系中的位置,若无父级对象则和属性Transform.position返回值相同。
transform.loaclPosition的值受父级对象属性影响,当transform.localPosition的值增加1时,transform.position值的赠量不一定是1,而是在相对父级坐标系中增加父级对象的值。

localToWorldMatrix属性:转换矩阵

基本语法

public Matrix4x4 localToWorldMatrix{ get;	}

功能说明
此属性用于返回从transform局部坐标系向世界坐标系转换的Matrix4x4矩阵

parent属性:父物体Transform实例

基本语法

public Transform parent{get;set;}

功能说明
此属性用于返回父物体的Transform实例。
transform.parent只能返回父一级对象的Transform,若要返回父物体的父物体,可以使用transform.parent.parent,更多级父物体以此类推。
若父物体不存在,则返回null。
若想返回transform的最顶层的父物体,可以使用transform.rooot属性

worldToLocalMatrix属性:转换矩阵

基本语法

public Matrix4x4 worldToLocalMatrix{ get; }

功能说明
此属性用于返回物体从世界坐标系向transform自身坐标系转换的Matrix4x4矩阵

Transform类实例方法

DetachChildren方法:分离物体层级关系

基本语法

public void DetachChildren();

功能说明
此方法的功能是使GameObject对象的所有子物体和自身分离层级关系,当子物体的行为不再依赖父物体时可以用此方法使父子关系分离。
若子物体仍有子物体,分离后的子物体将保留子物体的子物体的层级关系

GetChild方法:获取GameObject对象子类

基本语法

public Transform GetChild(int index);

功能说明
此方法用于返回transform的索引值为index的子类Transform实例。
参数index的值要小于transform的childCount值

InverseTransformDirection方法:坐标系转换

基本语法

1public Vector3 InverseTransformDirection(Vector3 direction);
其中参数direction为待转换的向量
2public Vector3 InverseTransformDirection(float x,float y,float z);

功能说明:
此方法用于将参数direction从世界坐标系转换到GameObject对象的局部坐标系。

InverseTransformPoint方法:点的相对坐标向量

基本语法

1public Vector3 InverseTransformPoint(Vector3 position);
2public Vector3 InverseTransformPoint(float x, float y, float z);

功能说明
此方法用于返回参数position向量相对于GameObject对象局部坐标系的差向量,即返回向量position和向量transform.position的差值。

IsChildOf方法:是否为子物体

基本语法

public bool IsChildOf(Transform parent);
其中参数parent为父物体的Transform实例

功能说明
此方法用于判断transform对应的GameObject对象是否为参数parent的子物体

LookAt方法:物体朝向

基本语法

1public void LookAt(Transform target);
2public void LookAt(Vector3 worldPosition);
3public void LookAt(Transform target,Vector3 worldUp);
4public void LookAt(Vector3 worldPosition , Vector3 worldUp);
其中参数target为transform自身坐标系中z轴指向的目标,参数worldUp为transform自身坐标系中y轴最大限度指向的方向

功能说明
此方法的功能是使得GameObject对象自身坐标系中的z轴指向target,y轴方向最大限度地指向worldUp方向。

Rotate方法:绕坐标轴旋转

基本语法

1public void Rotate(Vector3 eulerAngles);
2public void Rotate(Vector3 eulerAngles , Space relativeTo);
3public void Rotate(float xAngle , float yAngle ,float zAngle);
4public void Rotate(flaot xAngle , float yAngle ,float zAngle ,Space relativeTo);
其中参数eulerAngles为transform要旋转的欧拉角,参数relativeTo为transform旋转时参考的坐标系,默认为Space.Self。

功能说明
此方法的功能是使得transform实例在相对参数relativeTo的坐标系中旋转欧拉角eulerAngles。

Rotate方法:绕某个向量旋转

基本语法

1public void Rotate(Vector3 axis ,float angle);
2public void Rotate(Vector3 axis ,float angle ,Space relativeTo);
其中参数axis为旋转轴方向,参数angle为旋转角度,参数relativeTo为参考坐标系,默认为Space.self。

功能说明
此方法的功能是使得GameObject对象在relativeTo坐标系中绕轴向量axis旋转angle度。

RotateAround方法:绕轴点旋转

基本语法

1public void RotateAround(Vector3 axis ,float angle);
2public void RotateAround(Vector3 point,Vector3 axis ,float angle);
其中参数point为参考点坐标,参数axis为旋转轴方向,参数angle为旋转角度

功能说明
此方法的功能是使得GameObject对象绕着point点的axis方向旋转angle度

TransformDirection方法:坐标系转换

基本语法

1public Vector3 TransformDirection(Vector3 direction);
其中参数direction为待转换的Vector3实例向量。
2public Vector3 TransformDirection(float x ,float y ,float z);

功能说明
此方法用于将向量direction从transform局部坐标系转换到世界坐标系

TransformPoint方法:点的世界坐标位置

基本语法

1public Vector3 TransformPoint(Vector3 position);
其中参数position为transform局部坐标系的向量
2public Vector3 TransformPoint(float x,float y,float z);

功能说明
此方法用于返回GameObject对象局部坐标系中向量position在世界坐标系中的位置

Translate方法:相对坐标系移动

基本语法

1public void Translate(Vector3 translation);
2public void Translate(Vector3 translation ,Space relativeTo);
3public void Translate(float x ,float y , float z);
4public void Translate(float x ,float y , float z , Space relativeTo);
其中参数transform为移动向量,包括方向和大小,参数relativeTo为参考坐标系空间,默认为Space.Self

功能说明
此方法的功能是使得GameObject对象在参数relativeTo的坐标系空间中移动参数transform指定的向量

Translate方法:相对其他物体移动

基本语法

1public void Translate(Vector3 translation , Transform relativeTo);
2public void Translate(float x ,float y,float z, Transform relativeTo);
其中参数translation为移动向量,包括方向和大小,参数relativeTo为移动参考物体,默认为Space.World。

功能说明
此方法的功能是使得GameObject对象在相对relativeTo的坐标系中移动向量translation。

http://www.lryc.cn/news/310167.html

相关文章:

  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • GO基本类型
  • 怎么快速编辑视频
  • 基于vue-office实现docx、xlsx、pdf文件的在线预览
  • 数据库系统架构与DBMS功能探微:现代信息时代数据管理的关键
  • 51单片机-(中断系统)
  • c++之旅——第三弹
  • GO—函数
  • [WebUI Forge]ForgeUI的安装与使用 | 相比较于Auto1111 webui 6G显存速度提升60-75%
  • 高刷显示器 - HKC VG253KM
  • javascript实现的星座查询
  • 全国青少年软件编程(Python)等级考试试卷(一级) 测试卷2021年12月
  • 昇腾ACL应用开发之硬件编解码dvpp
  • MFC 模态对话框退出机制的探究
  • Android13 framework添加关机接口
  • 如何使用ArcGIS Pro为栅格图添加坐标信息
  • FDM打印机学习
  • C++进阶-- map和set
  • AI-数学-高中-33概率-事件的关系与运算
  • 数据结构:链队
  • 十四、计算机视觉-形态学梯度
  • 3月03日,每日信息差
  • leetcode 简单
  • 服务器硬件基础知识全解析
  • python毕设选题 - 大数据商城人流数据分析与可视化 - python 大数据分析
  • vmware网络负载均衡方式
  • Docker基础教程 - 2 Docker安装
  • Android 多桌面图标启动, 爬坑点击打开不同页面
  • 2024-3-1-网络编程作业
  • pytorch基础2-数据集与归一化