UnityAPI.Transform变换 |
版本 |
作者 |
参与者 |
完成日期 |
备注 |
UnityAPI_Transform_V01_1.0 |
严立钻 |
|
2018.08.21 |
|
|
|
|
|
|
#《UnityAPI.Transform变换》发布说明:
++++“UnityAPI.Transform变换”是对UnityAPI中Transform类的剖析和拓展;
#Transform变换 |
#Transform变换
++++A、Description描述
++++B、Variables变量
++++C、Public Function共有函数
++++D、Message消息
#A、Description描述 |
++A、Description描述
++++立钻哥哥:对象的位置、旋转和缩放;
++++场景中的每一个对象都有一个Transform;
--用于储存并操控物体的位置、旋转和缩放;
--每一个Transform可以有一个父级,允许分层次应用位置、旋转和缩放;
--可以在Hierarchy面板查看层次关系;
--他们也支持计数器(Enumerator),因此可以使用循环遍历子对象;
using UnityEngine; using System.Collections;
public class MyTransformClass : MonoBehaviour{ void MyExample(){ foreach(Transform child in transform){ child.position += Vector3.up * 10.0F; }
}
} //立钻哥哥:public class MyTransformClass:MonoBehaviour{}
|
namespace UnityEngine{ public class Transform : Component, IEnumerable{ ... ... } //立钻哥哥:public class Transform:Component,IEnumerable{}
} //立钻哥哥:namespace UnityEngine{} |
#B、Variables变量 |
++B、Variables变量
++++B.1、childCount 该变换的子对象数量
++++B.2、eulerAngles 此旋转作为欧拉角度
++++B.3、forward 向前
++++B.4、hasChanged 是否被改变
++++B.5、localEulerAngles 局部欧拉角
++++B.6、localPosition 相对于父级的变换的位置
++++B.7、localRotation 局部旋转
++++B.8、localScale 相对于父级变换的缩放
++++B.9、localToWorldMatrix 局部转世界矩阵
++++B.10、lossyScale 有损缩放
++++B.11、parent 该变换的父对象
++++B.12、position 在世界空间坐标transform的位置
++++B.13、right 向右
++++B.14、root 返回最高层级的变换
++++B.15、rotation 旋转角度
++++B.16、up 向上
++++B.17、worldToLocalMatrix 世界转局部矩阵
##B.1、childCount 该变换的子对象数量 |
++B.1、childCount 该变换的子对象数量
++++立钻哥哥:Transform.childCount子对象数;
int childCount; |
++Description描述
++++立钻哥哥:该变换的子对象数量;
using UnityEngine; using System.Collections;
public class MyTransformClass : MonoBehaviour{ void MyExample(){ print(transform.childCount); }
} //立钻哥哥:public class MyTransformClass:MonoBehaviour{} |
##B.2、eulerAngles 此旋转作为欧拉角度 |
++B.2、eulerAngles 此旋转作为欧拉角度
++++立钻哥哥:Transform.eulerAngles 欧拉角;
Vector3 eulerAngles; |
++Description描述
++++立钻哥哥:此旋转作为欧拉角度;
++++x、y、z角代表z轴旋转z度,绕x轴旋转x度,绕y轴旋转y度(这个顺序);
++++仅使用这个变量读取和设置角度为绝对值;
--不要递增它们,当超过角度360度,它将错误;
--使用Transform.Rotate替代;
using UnityEngine; using System.Collections;
public class MyTransformClass : MonoBehaviour{ public float yRotation = 5.0F;
void Update(){ yRotation += Input.GetAxis(“Horizontal”); transform.eulerAngles = new Vector3(10, yRotation, 0); }
void MyExample(){ print(transform.eulerAngles.x); print(transform.eulerAngles.y); print(transform.eulerAngles.z); }
} //立钻哥哥:public class MyTransformClass:MonoBehaviour{} |
++++不要分别设置欧拉角其中一个轴(例如:eulerAngles.x=10;),因为这将导致偏移和不希望的旋转;
--当设置它们一个新的值时,要同时设置全部(transform.eulerAngles = new Vector3(10, 5.0f, 0););
--Unity从存储在transform.localRotation的旋转自动转换角度;
##B.3、forward 向前 |
++B.3、forward 向前
++++立钻哥哥:Transform.forward 向前;
Vector3 forward; |
++Description描述
++++立钻哥哥:在世界空间坐标,变换的蓝色轴(也就是Z轴);
using UnityEngine; using System.Collections;
public class MyTransformClass : MonoBehaviour{ void MyExample(){ rigidbody.velocity = transform.forward * 10; }
} //立钻哥哥:public class MyTransformClass:MonoBeahaviour{}
|
using UnityEngine; using System.Collections;
public class MyTransformClass : MonoBehaviour{ public float angleBetween = 0.0F; public Transform target;
void Update(){ Vector3 targetDir = target.position - transform.position; angleBetween = Vector3.Angle(transform.forward, targetDir); }
} //立钻哥哥:public class MyTransformClass:MonoBehaviour{} |
##B.4、hasChanged 是否被改变 |
++B.4、hasChanged 是否被改变
++++立钻哥哥:Transform.hasChanged 是否被改变;
bool hasChanged; |
++Description描述
++++立钻哥哥:此变换自从上次标识是否被设置为false了?
++++对变换的任何改变会导致矩阵的重新计算:任意调节它的位置、旋转或缩放;
--请注意此操作,是否在设置此标识之前新旧的值不同,也将不会实际检查;
--因此,对于实例化,transform.position将总是设置此变换的hasChanged,无论是否有实际的变化;
using UnityEngine; using System.Collections;
public class MyTransformClass : MonoBehaviour{ void OnUpdate(){ if(transform.hasChanged){ print(“立钻哥哥:The transform has changed!”); transform.hasChanged = false; } }
} //立钻哥哥:public class MyTransformClass:MonoBehaviour{} |
##B.5、localEulerAngles 局部欧拉角 |
++B.5、localEulerAngles 局部欧拉角
++++立钻哥哥:Transform.localEulerAngles 局部欧拉角;
Vector3 localEulerAngles; |
++Description描述
++++立钻哥哥:旋转作为欧拉角度,相对于父级的变换旋转;
++++x、y、z角代表绕z轴旋转z度,绕x轴旋转x度,绕y轴旋转y度(这个顺序);
++++仅使用这个变量读取和设置角度为绝对值;
--不要递增它们,当超过角度360度,它将错误;
--使用Transform.Rotate替代;
using UnityEngine; using System.Collections;
public class MyTransformClass : MonoBeahaviour{ void MyExample(){ print(transform.localEulerAngles.x); print(transform.localEulerAngles.y); print(transform.localEulerAngles.z); }
} //立钻哥哥:public class MyTransformClass:MonoBehaviour{} |
++++Unity从存储在transform.localrotation的旋转自动转换角度;
##B.6、localPosition 相对于父级的变换的位置 |
++B.6、localPosition 相对于父级的变换的位置
++++立钻哥哥:Transform.localPosition 局部位置;
Vector3 localPosition; |
++Description描述
++++立钻哥哥:现对于父级的变换的位置;
++++如果该变换没有父级,那么等同于Transform.position;
using UnityEngine; using System.Collections;
public class MyTransformClass : MonoBehaviour{ void MyExample(){ transform.localPosition = new Vector3(0, 0, 0); print(transform.localPosition.y); }
} //立钻哥哥:public class MyTransformClass:MonoBehaviour{} |
++++注意当计算世界的位置时,父级变换的世界旋转和缩放被应用到自身的位置;
--意思是说:Transform.position的1个单位是1个单位,Transform.localPositon的1个单位将由所有父级的缩放获得缩放,简单来说自身位置的1单位将受所有上级的缩放影响;
##B.7、localRotation 局部旋转 |
++B.7、localRotation 局部旋转
++++立钻哥哥:Transform.localPosition 局部旋转;
Quaternion localRotation; |
++Description描述
++++立钻哥哥:该变换的旋转角度相当于父级变换的旋转角度;
++++Unity作为四元数存旋转角度;
--要旋转一个物体,使用Transform.Rotate,使用Transform.localEulerAngles为设置作为欧拉角的旋转角度;
using UnityEngine; using System.Collections;
public class MyTransformClass : MonoBehaviour{ void MyExample(){ transform.localRotation = Quaternion.identity; }
} //立钻哥哥:public class MyTransformClass:MonoBehaviour{} |
##B.8、localScale 相对于父级变换的缩放 |
++B.8、localScale 相对于父级变换的缩放
++++立钻哥哥:Transform.localScale 局部缩放;
Vector3 localScale; |
++Description描述
++++立钻哥哥:相对于父级变换的缩放;
using UnityEngine; using System.Collections;
public class MyTransformClass : MonoBehaviour{ void MyExample(){ transform.localScale += new Vector3(0.1F, 0, 0); }
} //立钻哥哥:public class MyTransformClass:MonoBehaviour{} |
##B.9、localToWorldMatrix 局部转世界矩阵 |
++B.9、localToWorldMatrix 局部转世界矩阵
++++立钻哥哥:Transform.localToWorldMatrix 局部转世界矩阵;
Matrix4x4 localToWorldMatrix; |
++Description描述
++++立钻哥哥:变换点的矩阵从局部坐标到世界坐标(只读);
++++如果不熟悉使用矩阵为坐标转换,使用Transform.TransformPoint代替;
++++重要:如果设置shader参数,必须使用Renderer.localToWorldMaxtrix替代;
##B.10、lossyScale 有损缩放 |
++B.10、lossyScale 有损缩放
++++立钻哥哥:Transform.lossyScale 有损缩放;
Vector3 lossyScale; |
++Description描述
++++立钻哥哥:该对象的整体缩放(只读);
++++请注意:如果有一个带有缩放的父变换和有任意旋转的子变换,此缩放将有偏差;
--因此缩放不能正确的表示在3组件的向量,而是一个3x3矩阵;
--这样表示工作十分不方便,lossyScale是个和方便的属性,它尽量匹配实际世界缩放,如果物体不是有偏差的,这个值将是完全正确的,如果物体包含偏差,这个值也不会有很大的不同;
using UnityEngine; using System.Collections;
public class MyTransformClass : MonoBehaviour{ void MyExample(){ print(transform.lossyScale); }
} //立钻哥哥:public class MyTransformClass:MonoBehaviour{} |
##B.11、parent 该变换的父对象 |
++立钻哥哥推荐的拓展学习链接(Link_Url):
++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/
++++Unity5.x用户手册:https://blog.csdn.net/VRunSoftYanlz/article/details/81712741
++++Unity面试题ABC:https://blog.csdn.net/vrunsoftyanlz/article/details/78630687
++++Unity面试题D:https://blog.csdn.net/VRunSoftYanlz/article/details/78630838
++++Unity面试题E:https://blog.csdn.net/vrunsoftyanlz/article/details/78630913
++++Unity面试题F:https://blog.csdn.net/VRunSoftYanlz/article/details/78630945
++++Unity知识点0001:https://blog.csdn.net/vrunsoftyanlz/article/details/80302012
++++Unity知识点0008:https://blog.csdn.net/VRunSoftYanlz/article/details/81153606
++++Unity引擎基础:https://blog.csdn.net/vrunsoftyanlz/article/details/78881685
++++Unity面向组件开发:https://blog.csdn.net/vrunsoftyanlz/article/details/78881752
++++Unity物理系统:https://blog.csdn.net/vrunsoftyanlz/article/details/78881879
++++Unity2D平台开发:https://blog.csdn.net/vrunsoftyanlz/article/details/78882034
++++UGUI基础:https://blog.csdn.net/vrunsoftyanlz/article/details/78884693
++++UGUI进阶:https://blog.csdn.net/vrunsoftyanlz/article/details/78884882
++++UGUI综合:https://blog.csdn.net/vrunsoftyanlz/article/details/78885013
++++Unity动画系统基础:https://blog.csdn.net/vrunsoftyanlz/article/details/78886068
++++Unity动画系统进阶:https://blog.csdn.net/vrunsoftyanlz/article/details/78886198
++++Navigation导航系统:https://blog.csdn.net/vrunsoftyanlz/article/details/78886281
++++Unity特效渲染:https://blog.csdn.net/vrunsoftyanlz/article/details/78886403
++++Unity数据存储:https://blog.csdn.net/vrunsoftyanlz/article/details/79251273
++++Unity中Sqlite数据库:https://blog.csdn.net/vrunsoftyanlz/article/details/79254162
++++WWW类和协程:https://blog.csdn.net/vrunsoftyanlz/article/details/79254559
++++Unity网络:https://blog.csdn.net/vrunsoftyanlz/article/details/79254902
++++C#事件:https://blog.csdn.net/vrunsoftyanlz/article/details/78631267
++++C#委托:https://blog.csdn.net/vrunsoftyanlz/article/details/78631183
++++C#集合:https://blog.csdn.net/vrunsoftyanlz/article/details/78631175
++++C#泛型:https://blog.csdn.net/vrunsoftyanlz/article/details/78631141
++++C#接口:https://blog.csdn.net/vrunsoftyanlz/article/details/78631122
++++C#静态类:https://blog.csdn.net/vrunsoftyanlz/article/details/78630979
++++C#中System.String类:https://blog.csdn.net/vrunsoftyanlz/article/details/78630945
++++C#数据类型:https://blog.csdn.net/vrunsoftyanlz/article/details/78630913
++++Unity3D默认的快捷键:https://blog.csdn.net/vrunsoftyanlz/article/details/78630838
++++游戏相关缩写:https://blog.csdn.net/vrunsoftyanlz/article/details/78630687
++++设计模式简单整理:https://blog.csdn.net/vrunsoftyanlz/article/details/79839641
++++专题:设计模式(精华篇):https://blog.csdn.net/VRunSoftYanlz/article/details/81322678
++++U3D小项目参考:https://blog.csdn.net/vrunsoftyanlz/article/details/80141811
++++UML类图:https://blog.csdn.net/vrunsoftyanlz/article/details/80289461
++++U3D_Shader编程(第一篇:快速入门篇):https://blog.csdn.net/vrunsoftyanlz/article/details/80372071
++++U3D_Shader编程(第二篇:基础夯实篇):https://blog.csdn.net/vrunsoftyanlz/article/details/80372628
++++框架知识点:https://blog.csdn.net/VRunSoftYanlz/article/details/80862879
++++游戏框架(UI框架夯实篇):https://blog.csdn.net/vrunsoftyanlz/article/details/80781140
++++游戏框架(初探篇):https://blog.csdn.net/VRunSoftYanlz/article/details/80630325
++++Lua快速入门篇(基础概述):https://blog.csdn.net/VRunSoftYanlz/article/details/81041359
++++Lua快速入门篇(XLua教程):https://blog.csdn.net/VRunSoftYanlz/article/details/81141502
++++Lua快速入门篇(Xlua拓展):https://blog.csdn.net/VRunSoftYanlz/article/details/81173818
++++UnityAPI.Rigidbody刚体:https://blog.csdn.net/VRunSoftYanlz/article/details/81784053
++++UnityAPI.Material材质:https://blog.csdn.net/VRunSoftYanlz/article/details/81814303
++++UnityAPI.Android安卓:https://blog.csdn.net/VRunSoftYanlz/article/details/81843193
++++UnityAPI.AndroidJNI安卓JNI:https://blog.csdn.net/VRunSoftYanlz/article/details/81879345
++++UnityAPI.Transform变换:https://blog.csdn.net/VRunSoftYanlz/article/details/81916293
++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/
--_--VRunSoft:lovezuanzuan--_--