Unity Transform 学习和应用
2015-07-08 00:03
405 查看
Transform类学习
Transform 变换,是场景中最常打交道的类,用于控制物体的位移,旋转,缩放等功能。Transform
Class, inherits from Component, IEnumerable
Position, rotation and scale of an object.
控制物体的位置,旋转和缩放。
Every object in a scene has a Transform. It’s used to store and manipulate the position, rotation and scale of the object. Every Transform can have a parent, which allows you to apply position, rotation and scale hierachically. This is the hierarchy seen in the Hierarchy pane. They also support enumerators so you can loop through children using:
每一个场景中的物体都有Transform这个类,他是用来储存和处理物体的位移,旋转和缩放的。每一个Transform都可以有一个父物体,这可以让你得到下游节点的位移旋转和缩放。这个层次结构关系可以从Hierarchy面板中看到。他还支持enumerators,以使用循环来遍寻所有的子节点。
all transform children 10 units upwards!
for (var child : Transform in transform) { child.position += Vector3.up * 10.0; }
Variables 属性
position: Vector3 绝对位置,相对于世界坐标物体的位置。localPosition: Vector3 相对位置,或自身位置,物体相对于父物体的位置。
eulerAngles: Vector3 轴向旋转角度,相对于世界坐标轴。单位为度,而非弧度。运行时的数值在(0,360)。
localEulerAngles: Vector3 相对轴向旋转角度,或自身的旋转角度,物体相对于父物体的旋转。一般使用和处理物体的旋转角度时都会使用到这个数值。
right: Vector3 物体自身的红色轴向(X轴)在世界坐标中所指向的位置。注意在maya中x轴指向物体的左边,而unity中的x轴则指向物体的右边。
rigidbody.velotity=transform.right*moveSpeed;//向物体的右侧以moveSpeed的速度移动
up: Vector3 物体自身的绿色轴向(Y轴)在世界坐标中所指向的位置。
forward: Vector3 物体自身的蓝色轴向(Z轴)在世界坐标中所指向的位置。
rotation: Quaternion 以四元数来表达的物体自身的旋转。四元数可以快速的处理物体的旋转方向的计算,搭配Quaternion可以用来计算各种需要的旋转方案。
localRotation: Quaternion 相对于父物体的用四元数来表达的旋转。
localScale: Vector3 物体相对于父物体的缩放
parent: Transform 物体的父物体。 如果没有则返回null。 如果改变父物体的位置,旋转和缩放,会同时影响并改变子物体的位置,旋转和缩放,但是保持相对位置,相对旋转和相对缩放。
worldToLocalMatrix: Matrix4x4 一个表达从世界坐标到相对坐标位置的四维矩阵,Read Only。 如果你对矩阵不是很了解,请使用Transform.InverseTransformPoint。
LocalToWorldMatrix: Matrix4x4 一个表达从相对坐标到世界坐标位置的四维矩阵,Read Only。 如果你对矩阵不是很了解,请使用Transform.TransformPoint。
root: Transform 返回物体的最高层的父物体。如果物体本身就是最高层,则返回物体本身。
childCount: Int 返回物体的子物体数量。
lossyScale:Vector3 返回物体相对于世界坐标的缩放值。 Read Only。没什么用的一个属性,当子物体被旋转后也不是特别精确,也不推荐大家用。如果想要计算物体的世界坐标缩放,最好自己写计算公式。
Functions 方法
1)Translate, 用来移动物体的函数,非常常用的一个函数。function Translate (translation : Vector3, relativeTo : Space = Space.Self) : void
把物体向translation方向移动,距离为translation.magnitude(模长)。 relativeTo表示这个移动的参考坐标系。Space.Self是以自身的坐标轴取相对位置,Space.World是以Global下世界坐标轴取相对位置。
function Translate (x : float, y : float, z : float, relativeTo : Space = Space.Self) : void
同上
function Translate (translation : Vector3, relativeTo : Transform) : void
如果relativeTo 不是null, 则以目标物体relativeTo的自身轴向作为参考坐标系。
function Translate (x : float, y : float, z : float, relativeTo : Transform) : void
这里是按照relativeTo物体的坐标轴位置移动。
var speed=30; //将物体以30米每秒的速度向前移动。 trasform.Translate(Vector3.forward*speed*Time.deltaTime); //一个物体沿着另一个物体的方向移动 Vector3 direction=target.transform.position- transform.position; direction = direction.normalized; this.transform.Translate(direction*Time.deltaTime, Space.World);
2)Rotate,用来旋转物体的函数,非常常用,在知道需要旋转的角度的情况下。如果要让物体旋转到指定位置,需要搭配Quaternion来使用。
function Rotate (eulerAngles : Vector3, relativeTo : Space = Space.Self) : void
旋转eulerAngles度(3个轴向分别旋转),以relativeTo为参考坐标系
function Rotate (xAngle : float, yAngle : float, zAngle : float, relativeTo : Space = Space.Self) : void
同上
function Rotate (axis : Vector3, angle : float, relativeTo : Space = Space.Self) : void
以axis为轴旋转angle度,以relativeTo为参考坐标系
3)RotateAround 让物体以某一点为轴心成圆周运动。
function RotateAround (point : Vector3, axis : Vector3, angle : float) : void
让物体以point为中心,绕axis为轴向旋转angle度。 保持原来与point的距离。
4)LookAt 让物体的z轴看向目标物体
function LookAt (target : Transform, worldUp : Vector3 = Vector3.up) : void
让物体的z轴看向target的位置,并以worldUp为y轴指向方向。
function LookAt (worldPosition : Vector3, worldUp : Vector3 = Vector3.up) : void
让物体看向worldPosition
5)TransformDirection
function TransformDirection (direction : Vector3) : Vector3
返回以物体自身为坐标轴的向量direction在世界坐标中的朝向向量。
function TransformDirection (x : float, y : float, z : float) : Vector3
同上
6)InverseTransformDirection
function InverseTransformDirection (direction : Vector3) : Vector3
function InverseTransformDirection (x : float, y : float, z : float) : Vector3
与TransformDirection相反,从世界坐标转换到自身相对坐标。
7)TransformPoint
function TransformPoint (position : Vector3) : Vector3
function TransformPoint (x : float, y : float, z : float) : Vector3
把一个点从自身相对坐标转换到世界坐标
8)InverseTransformPoint
function InverseTransformPoint (position : Vector3) : Vector3
function InverseTransformPoint (x : float, y : float, z : float) : Vector3
把一个点从时间坐标转换到自身坐标的位置。
9)DetachChildren
function DetachChildren () : void
把自身所有的子物体的父物体都设成世界,也就是跟自己的所有子物体解除父子关系。
10)Find
function Find (name : string) : Transform
找到一个名字是name的物体并返回
如果没有找到则返回null。 如果字符串被/隔离,函数则会像文件路径一样逐级下查。
function Update() { aFinger = transform.Find("LeftShoulder/Arm/Hand/Finger"); aFinger.Rotate(Time.deltaTime*20, 0, 0); }
11) IsChildOf
function IsChildOf (parent : Transform) : bool
如果物体是parent的父子层级关系下的一员,返回true;
相关文章推荐
- css transform 3D幻灯片特效实现步骤解读
- Android变形(Transform)之Camera使用介绍
- unity实现多点触控代码
- 在Unity中实现动画的正反播放代码
- unity实现摄像头跟随
- Unity3D上路_01-2D太空射击游戏
- Unity3D上路_02-第一视角射击游戏
- Unity3D上路_03-塔防游戏
- Unity3D上路_04-基础资源介绍
- Unity3D上路_05-网络相关
- [软件资讯]Unity已支持将3D游戏导出成Flash
- Unity 武器拖尾效果
- unity常见问题之20题
- Unity3D动画存储插件
- unity 赛车相机跟随物体移动
- Unity 预编译宏
- VS2013中 命名空间“UnityEngine”中不存在类型或命名空间名称“UI”。是否缺少程序集引用?
- Unity3D占用内存太大的解决方法
- IOS UI transform 属性
- 【Unity】安卓项目使用带有资源Jar包SDK的打包方法