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.mzph.cn/news/716413.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

echarts vue 动画效果的水球图、波浪图教程

1、安装插件 前提是已经安装了echarts(我的版本是4.2.1) npm install echarts-liquidfill --save 我安装了3.1.0版本的,结果运行时报错"TypeError: wave.ensureState is not a function" 原因:echarts版本和echarts-l…

miniconda3彻底删除虚拟环境

退出虚拟环境:确保您不在要删除的虚拟环境中。如果在,使用命令 conda deactivate 来退出当前激活的虚拟环境。查看虚拟环境列表:运行命令 conda env list 或 conda info -e 来查看所有存在的虚拟环境及其路径。删除虚拟环境:使用命…

在VMware中安装CentOS 7并配置Docker

VMware安装CentOS 7 一、介绍 该文章介绍如何使用启动U盘在虚拟机里面安装系统,虚拟机版本为VMware Workstation 16 pro,Linux版本为CentOS Linux release 7.9.2009 (Core)。 二、安装 1、创建虚拟机 点击创建新的虚拟机 选择典型就可以了&#xf…

前缀和算法题(区间次方和、小蓝平衡和、大石头的搬运工、最大数组和)

一、前缀和的原理和特点 prefix表示前缀和,前缀和由一个用户输入的数组生成。对于一个数组a[](下标从1开始),我们定义一个前缀和数组prefix[],满足: prefix有一个重要的特性,可以用于快速生成p…

WordPress建站入门教程:如何安装本地WordPress网站运行环境?

有些站长想要搭建WordPress网站,又担心自己玩不转,白白浪费购买域名和主机空间的费用。像这种情况,最好的做法就是在自己电脑上安装一个WordPress网站运行环境,然后在本地电脑搭建WordPress,等熟悉掌握后再考虑购买域名…

设计模式学习笔记——抽象工厂模式

设计模式(创建型)—— 抽象工厂模式 在工厂模式中,我们为每一个类都设计了一个工厂,以此来获取该类的对象,但缺点就是一旦类多了,工厂就多了,这时候我们可以考虑这些类间是否有关联&#xff0c…

多输入多输出 | MATLAB实现GWO-Elman灰狼优化循环神经网络多输入多输出预测

多输入多输出 | MATLAB实现GWO-Elman灰狼优化循环神经网络多输入多输出预测 目录 多输入多输出 | MATLAB实现GWO-Elman灰狼优化循环神经网络多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 Matlab实现GWO-Elman灰狼优化循环神经网络多输入多输出…

kernel bypass 是什么?

文章目录 一、kernel bypass 是什么二、Kernel Bypass技术优缺点三、Kernel Bypass技术应用领域四、Kernel Bypass的实现方式 一、kernel bypass 是什么 Kernel Bypass是一种技术,旨在通过绕过操作系统核来提高网络数据包处理的性能和降低延迟。它的主要优点是高性能…

[LeetBook]【学习日记】有序链表合并

21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4] 示例 2: 输入:l1 [], l2 [] …

如何在电脑上中恢复已删除的视频

您可以在电脑中恢复已删除的视频,无需任何繁琐的工作。您所需要做的就是阅读本文,了解恢复已删除视频的最佳方法。 一次错误的点击可能会夺走您以视频形式存储的宝贵记忆。嗯,有些视频不适合删除,您希望永远保留它们。失去这些宝…

如何使用Docker搭建StackEdit编辑器并结合内网穿透实现远程办公

文章目录 前言1. ubuntu安装VNC2. 设置vnc开机启动3. windows 安装VNC viewer连接工具4. 内网穿透4.1 安装cpolar【支持使用一键脚本命令安装】4.2 创建隧道映射4.3 测试公网远程访问 5. 配置固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址5.3 测试…

优选算法|【双指针】|1089.复写零

目录 题目描述 题目解析 算法原理讲解 代码 题目描述 1089. 复写零 给你一个长度固定的整数数组 arr ,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。 注意:请不要在超过该数组长度的位置写入元素。请对输入的数组 就…

LeetCode受限条件下可到达节点的数目

题目描述 现有一棵由 n 个节点组成的无向树,节点编号从 0 到 n - 1 ,共有 n - 1 条边。 给你一个二维整数数组 edges ,长度为 n - 1 ,其中 edges[i] [ai, bi] 表示树中节点 ai 和 bi 之间存在一条边。另给你一个整数数组 restr…

OJ:移除链表元素

203. 移除链表元素 - 力扣(LeetCode) 思路:这个题可以直接在原链表上进行修改,但是修改链表的指向是有点麻烦的,所以我们给两个指针,phead和ptail,这是新链表的两个指针,再给一个指针pcur来遍历…

Java和JavaScript区别

1. Java和javaScript都是面向对象语言 2. 他两除了名字相似之外没有任何关系 3. Java是一种真正的面向对象语言,不管开发什么程序都要设计对象;而JavaScript是种脚本语言,主要实现前端页面的交互,比如验证表单,弹窗提…

Sqli-labs靶场第12关详解[Sqli-labs-less-12]

Sqli-labs-Less-12 #手工注入 post传参了 根据题目看,像一个登录页面,尝试使用布尔型盲注测试能否登录网站 1. Username输入a a" 测试是否会有报错,burp抓包 报错:syntax to use near "a"") and passw…

消息中间件之RocketMQ源码分析(二十七)

Broker提交或回滚事务消息 当生产者本地事务处理完成并且Broker回查事务消息后,不管执行Commit还是Rollback,都会根据用户本地事务的执行结果发送一个End_transaction的RPC请求给Broker,Broker端处理该请求的类是EndTransactionProcessor 第一步&…

volatile 关键字 (一)

volatile 关键字 (一) 文章目录 volatile 关键字 (一)如何保证变量的可见性?如何禁止指令重排序? 文章来自Java Guide 用于学习如有侵权,立即删除 如何保证变量的可见性? 在 Java 中…

【Linux安装软件命令及vim、gcc使用说明】

安装软件命令 Linux安装软件的命令首先要进入管理员权限 首先在终端输入sudo su切换到管理员界面 输入对应的密码,注意这里的密码不会显示出来,输完密码之后回车即可。当出现root就代表已经是管理员界面了。 如果相应退出管理员界面输入exit即可。 注…

django-paramiko远程服务器和文件管理(五)

一、paramiko简介 1.paramiko是一个基于SSHv2协议的纯Python库。需要单独安装。 2.它提供了客户端和服务器的功能。 3.可以实现SSH2远程安全连接,支持用户名、密码连接,也支持密钥连接 4.一般用于执行远程命令、传输文件、中间SSH代理等 安装 pip3 in…