Unity Transform 学习和应用

原创 2015年07月08日 00:03:25

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;

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

蓝鸥Unity入门Transform学习笔记

蓝鸥Unity入门Transform学习笔记

unity学习之Transform

Unity的脚本中常用的必然事件:        在Unity的脚本中,可以定义一些特定的函数,这些函数会在满足某些条件时由Unity自动调用,它们被称为必然事件(Certain Events)。...

Unity3D学习之(transform和Vector3向量)

欢迎大家光临我的博客!   欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,我们致力于打造业内...

unity学习一之(初学脚本 Transform类 )

Tansfrom 类又是Unity中非常重要的类,也是一个特别的类.我们都知道Unity是基于组件开发的引擎.在每个GameObject的Inspector界面有很多组件,我们可以为它添加新的组件或者...
  • leo_wc
  • leo_wc
  • 2015年01月19日 11:58
  • 6477

unity3d中Transform组件变量详解

Transform组件是每个游戏对象必须有的一个组建,因为你创建一个空物体,它也有该组建,因为unity3d是面向组建开发的一款游戏引擎 http://www.jixielianmeng.com/p...
  • zfsCSD
  • zfsCSD
  • 2015年06月16日 20:35
  • 621

[unity基础教程]操作transform.localPosition的时候请小心

移动GameObject是非常平常的一件事情,一下代码看起来很简单: transform.localPosition += new Vector3 ( 10.0f * Time.deltaTim...

Unity的Vector3.Set( x, y, z)... 对transform里的position们是不会起作用的?

年后的空闲翻译了几篇没水准的文章,现在由于又干活了,至少不可能那么闲来每天翻译一章了. 结果由于年前就请假,到最近才开始完整的写代码,很多东西居然都快忘了,果然不能闲啊. 今天做了一个很简单的...

Unity3d vector3.forward和transform.forward的区别!

在unity3d中有2个forward,一个是vector3.forward和transform.forward,这两个forward其实完全不一样。他们之间的区别主要体现在在不同坐标系时的反映上。 ...

Unity中的Transform Gizmo中的Pivot和Center

选择中心(Center)意味着使用当前所选所有物体的共同轴心,      选择轴心(Pivot)意味着将使用各个物体的实际轴心 区别在于是否选中了多个物体或者有层级关系的物体。 ...

我和我的小伙伴们一起学Unity3D(四)角色移动之Transform

经过前三章的介绍,我们终于搞定了游戏界面,从本章开始,我将带大家创造游戏世界!作为一个游戏爱好者,最熟悉的莫过于WASD键,它控制着人物行走,带我们认识游戏世界,那么在Unity3D中我们如何控制人物...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Unity Transform 学习和应用
举报原因:
原因补充:

(最多只允许输入30个字)