当前位置: 首页 > 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。

相关文章:

UnityAPI的学习——Transform类

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

(全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF

研究生英语读写教程基础级教师用书PDF 研究生英语读写教程提高级教师用书PDF pdf下载(完整版下载) (1)研究生英语读写教程基础级教师用书PDF (2)研究生英语读写教程基提高级教师用书PDF...

GO基本类型

Go语言同时提供了有符号和无符号的整数类型。 有符号整型:int、int8、int64、int32、int64无符号整型:uint、uint8、uint64、uint32、uint64、uintptr 有符号整型范围:-2^(n-1) 到 2^(n-1)-1 无符号整型范围: 0 到 2^n-1 实际开发中由于编…...

怎么快速编辑视频

背景:怎么简单快速编辑视频 利用FFmpeg功能,简单快速编辑视频,如按9:16提前剪切视频、替换背景音乐。 下载FFmpeg:https://ffmpeg.org/download.html 将FFmpeg的路径添加到环境变量中: Windows:在系统的环…...

基于vue-office实现docx、xlsx、pdf文件的在线预览

概述 在做项目的时候会遇到docx、xlsx、pdf等文件的在线预览需求,实现此需求可以有多种解决方式,本文基于vue-office实现纯前端的文件预览。 效果 如下图,分别为docx、xlsx、pdf三种类型的文件在线加载后的效果。你也可以访问官方预览网址…...

数据库系统架构与DBMS功能探微:现代信息时代数据管理的关键

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua,在这里我会分享我的知识和经验。&#x…...

51单片机-(中断系统)

51单片机-(中断系统) 了解51单片机中断系统、中断源、中断响应条件和优先级等,通过外部中断0实现按键控制LED亮灭为例理解中断工作原理和编程实现过程。 1.中断系统结构 89C51/52的中断系统有5个中断源 ,2个优先级,…...

c++之旅——第三弹

大家好啊,这里是c之旅第三弹,跟随我的步伐来开始这一篇的学习吧! 如果有知识性错误,欢迎各位指正!!一起加油!! 创作不易,希望大家多多支持哦! 一.命名空间;…...

GO—函数

Go 语言支持普通函数、匿名函数和闭包,从设计上对函数进行了优化和改进,让函数使用起来更加方便。 Go 语言的函数属于“一等公民”(first-class),也就是说: 函数本身可以作为值进行传递。支持匿名函数和闭…...

[WebUI Forge]ForgeUI的安装与使用 | 相比较于Auto1111 webui 6G显存速度提升60-75%

ForgeUI的github主页地址:https://github.com/lllyasviel/stable-diffusion-webui-forge Stable Diffusion WebUI Forge 是一个基于Stable Diffusion WebUI(基于Gradio)的平台,可简化开发、优化资源管理并加快推理速度。 “Forge”这个名字的灵感来自于“Minecraft Forge”…...

高刷显示器 - HKC VG253KM

🔥🔥 今天来给大家揭秘一款电竞神器 - HKC VG253KM 高刷电竞显示器!这款显示器可是有着雄鹰展翅般的设计灵感,背后的大鹏展翅鹰翼图腾让人过目难忘。那么,这款显示器到底有哪些过人之处呢?一起来看看吧&…...

javascript实现的星座查询

今天在这个网站http://xzxys.wiicha.com/看到查询星座幸运色的效果,想研究一下代码,结果右键禁用。后来参考了一下别人的代码,琢磨着先实现了一下星座查询的功能,输入月份和日期四位数后,可以查询属于哪个星座&#xf…...

全国青少年软件编程(Python)等级考试试卷(一级) 测试卷2021年12月

第 1 题 【 单选题 】 下面程序的运行结果是什么?( ) a10 b5 ca*b print(c) A :10 B :15 C :50 D :5 正确答案:C 试题解析: 第 2 题 【 单选题 】 与a>b and b>c等价的是?( ) A…...

昇腾ACL应用开发之硬件编解码dvpp

1.前言 在我们进行实际的应用开发时,都会随着对一款产品或者AI芯片的了解加深,大家都会想到有什么可以加速预处理啊或者后处理的手段?常见的不同厂家对于应用开发的时候,都会提供一个硬件解码和硬件编码的能力,这也是抛…...

MFC 模态对话框退出机制的探究

一位读者问了这样一个问题: ” 如果我创建了一个可见的模态对话框,却对用户来说不可用。举个例子,假设我在程序中的其他位置收到一个事件,并且我从事件中调用模态 CDialog 上的 DestroyWindow。我注意到 OnDestroy 是在 CDialog 上调用的,但在将 WM_QUIT 消息发送到模态对…...

Android13 framework添加关机接口

framework层修改: t0_sys/frameworks/base/core/api/current.txt method RequiresPermission(android.Manifest.permission.REBOOT) public void reboot(Nullable String);method public void rebootp();t0_sys/frameworks/base/core/java/android/os/IPowerManager…...

如何使用ArcGIS Pro为栅格图添加坐标信息

在某些时候,我们从网上获取的资源是一张普通的栅格图,没有任何的坐标信息,如果想要和带坐标信息的数据一起使用就需要先添加坐标信息,在GIS上,我们把这个过程叫做地理配准,这里为大家介绍一下地理配准的方法…...

FDM打印机学习

以下内容摘自网络,仅供学习讨论,侵删。 持续更新。。。 FDM打印机是通过喷头融化丝状耗材(PLA,ABS等材料),然后逐层涂在热床上,一层一层逐级抬高。 结构分类 Prusa i3型是一种龙门结构&#…...

C++进阶-- map和set

关联式容器 在前面,我们所学的vector、list、deque,这些都是序列容器,也就是底层为线性序列的数据结构。 而关联式容器是C标准库中的一种类别,用于存储键值对(key-value pair),关联式容器中的元…...

AI-数学-高中-33概率-事件的关系与运算

原作者视频:【概率】【一数辞典】2事件的关系与运算_哔哩哔哩_bilibili 事件: 和/并事件;积/交事件;互诉事件;对立(补集)事件;...

如何查询SQL中长度超过阈值的文本_使用LENGTH函数过滤

MySQL中LENGTH()返回字节数而非字符数,utf8mb4下汉字占3-4字节,需用CHAR_LENGTH()按字符过滤;PostgreSQL中LENGTH()按字符计,OCTET_LENGTH()才按字节;SQL Server用LEN()和DATALENGTH()区分字符与字节。MySQL里用LENGTH…...

如何使用R语言制作词云

词云是一种常见的文本数据可视化的方法,词云分析的工作有多种,其中使用R语言中的wordcloud包中的wordcloud2函数可以很方便地制作词云。 关于wordcold2函数的用法不再赘述,查以使用help(wordcloud2)查看有关帮助,其中的参数是不难…...

DataCap实战指南:从多源数据整合到智能可视化的全流程解析

1. DataCap入门:为什么你需要这个数据瑞士军刀 第一次接触DataCap是在三年前的一个企业数据治理项目里。当时客户有十几个不同系统的数据需要整合,从传统的MySQL到实时分析的ClickHouse,还有一堆Excel和CSV文件。团队折腾了两周都没搞定数据…...

高效3D医学图像分割实战:MedSAM从入门到精通

高效3D医学图像分割实战:MedSAM从入门到精通 【免费下载链接】MedSAM Segment Anything in Medical Images 项目地址: https://gitcode.com/gh_mirrors/me/MedSAM MedSAM(Segment Anything in Medical Images)是一款专为医学影像设计的…...

Steam Achievement Manager:全方位掌控游戏成就的开源解决方案

Steam Achievement Manager:全方位掌控游戏成就的开源解决方案 【免费下载链接】SteamAchievementManager A manager for game achievements in Steam. 项目地址: https://gitcode.com/gh_mirrors/st/SteamAchievementManager 一、功能解析:三大核…...

Blazor与AI原生融合:如何在客户端直接调用ONNX Runtime + ML.NET推理模型(含TensorFlow.js互操作避坑指南)

第一章:Blazor与AI原生融合的范式演进传统Web前端框架长期面临状态同步复杂、服务端耦合度高、实时AI能力接入成本大等瓶颈。Blazor凭借WebAssembly(WASM)与服务器端SignalR双执行模型,首次为浏览器端提供了可运行强类型.NET代码的…...

终极指南:通过cursor-free-vip开源工具实现Cursor Pro无限制访问

终极指南:通过cursor-free-vip开源工具实现Cursor Pro无限制访问 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reache…...

微软VibeVoice-TTS-Web-UI:长文本语音合成效果展示

微软VibeVoice-TTS-Web-UI:长文本语音合成效果展示 1. 突破性的语音合成体验 1.1 从机械朗读到情感表达 传统语音合成技术往往停留在"文字转声音"的基础层面,生成的语音缺乏情感起伏和自然韵律。VibeVoice-TTS-Web-UI通过创新的语言理解和声…...

AICoverGen技术指南:从环境部署到专业AI翻唱制作

AICoverGen技术指南:从环境部署到专业AI翻唱制作 【免费下载链接】AICoverGen A WebUI to create song covers with any RVC v2 trained AI voice from YouTube videos or audio files. 项目地址: https://gitcode.com/gh_mirrors/ai/AICoverGen 问题篇&…...

游戏音频格式解密工具acbDecrypter:打破加密壁垒的专业解决方案

游戏音频格式解密工具acbDecrypter:打破加密壁垒的专业解决方案 【免费下载链接】acbDecrypter 项目地址: https://gitcode.com/gh_mirrors/ac/acbDecrypter 在游戏开发与逆向工程领域,加密音频文件常常成为技术探索的障碍。acbDecrypter作为一款…...