当前位置: 首页 > 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 事件: 和/并事件;积/交事件;互诉事件;对立(补集)事件;...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

C++ 基础特性深度解析

目录 引言 一、命名空间(namespace) C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用(reference)​ C 中的引用​ 与 C 语言的对比​ 四、inline(内联函数…...

网络编程(UDP编程)

思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...