最近在学习unity3d,下面对Transform类做一个小结

一、常用属性和方法

  1.1 常用属性:

用代码展示一下上面的一些属性,值得注意的是myCube是mySphere的父物体

using UnityEngine;

public class test : MonoBehaviour
{
GameObject myCube;
GameObject mySphere; void Start()
{
myCube = GameObject.Find("Cube");
mySphere = GameObject.Find("Sphere");
Debug.Log("Cube position:" + myCube.transform.position);
Debug.Log("Sphere position:" + mySphere.transform.position);
Debug.Log("Sphere localPosition:" + mySphere.transform.localPosition);
Debug.Log("eulerAngle" + myCube.transform.eulerAngles);
}
}

结果如下:

  

  position 和localPosition的区别:

  position是世界坐标中transform的位置,而localPosition是相对于父级变换的位置,即以父级物体的坐标为原点,它的相对位置。

  

  eulerAngles:欧拉角,当rotate小于中的各个值都小于360时,使用eulerAngles将可以正确的将rotate的值转换为欧拉角

  x、y、z角代表绕z轴旋转z度,绕x轴旋转x度,绕y轴旋转y度(这个顺序)。

  仅使用这个变量读取和设置角度为绝对值。不要递增它们,当超过角度360度,它将错误。使用Transform.Rotate替代。

using UnityEngine;

using System.Collections;

public class ExampleClass : MonoBehaviour {

    public float yRotation = 5.0F;

    void Update() {

        yRotation += Input.GetAxis("Horizontal");

        transform.eulerAngles = new Vector3(, yRotation, );

    }

    void Example() {

        print(transform.eulerAngles.x);

        print(transform.eulerAngles.y);

        print(transform.eulerAngles.z);

    }

}

  不要分别设置欧拉角其中一个轴(例如: eulerAngles.x = 10; ),因为这将导致偏移和不希望的旋转。当设置它们一个新的值时,要同时设置全部,如上所示。

  

  translate:可以使物体向某方向移动物体多少距离。它有许多个重载

    void Translate(Vector3 translation, Space relativeTo = Space.Self): 移动transform在translation的方向和距离。

    如果relativeTo留空或者设置为Space.Self,移动被应用相对于变换的自身轴。(当在场景视图选择物体时,x、y和z轴显示)如果相对于Space.World 移动被应用相对于世界坐标系统。

using UnityEngine;

using System.Collections;

public class ExampleClass : MonoBehaviour {

    void Update() {

        transform.Translate(Vector3.forward * Time.deltaTime);

        transform.Translate(Vector3.up * Time.deltaTime, Space.World);

    }

}

    void Translate(float x, float y, float z, Space relativeTo = Space.Self):: 移动变换由x沿着x轴,y沿着y轴,z沿着z轴。

using UnityEngine;

using System.Collections;

public class ExampleClass : MonoBehaviour {

    void Update() {

        transform.Translate(, , Time.deltaTime);

        transform.Translate(, Time.deltaTime, , Space.World);

    }

}

  还有一些这里就不一一例举了

  rotate:旋转

    transform.Rotate(0, 90, 0);//分别绕X,Y,Z轴旋转

  transform.Rotate(Vector3.right * Time.deltaTime);//以欧拉角旋转,顺序是ZXY,right是向X轴旋转1度

  transform.Rotate(0, 45, 0, Space.World);//绕世界坐标系的XYZ轴旋转,也就是其顶层父物体的坐标系,如果自身在顶层则没有区别,并不是绕点旋转,而是不按照自身的坐标系旋转

  transform.Rotate(Vector3.up, Space.Self);//绕自身坐标系旋转,这是默认的
    void Rotate(Vector3 axis, float angle, Space relativeTo = Space.Self):按照angle度围绕axis轴旋转变换。

  下面例子将使挂载脚本的物体绕Y轴不停地每次旋转45度

using UnityEngine;

public class MyRotate : MonoBehaviour
{
void Update()
{
transform.Rotate(Vector3.up*Time.deltaTime, );
}
}

  在代码中直接使用小写的transform代表的是挂载该脚本的物体的transform

  控制物体旋转的时候可能会弄不明白让它沿着哪个轴转,个人总结出了一个小技巧,即你在Rotate中使用了哪个轴就代表绕哪个轴转,上面的代码用的是Vector3.up,使用了包含Y轴的参数,所以是按Y轴旋转,当改成

Vector3.back则绕X轴旋转

二、Transform完整的内容(来自unity圣典)

  Variables 变量

childCount The number of children the Transform has.
该变换的子对象数量。
eulerAngles The rotation as Euler angles in degrees.
此旋转作为欧拉角度。
forward The blue axis of the transform in world
space.
在世界空间坐标,变换的蓝色轴。也就是z轴。
hasChanged Has the transform changed since the last time the flag was set to
'false'?
此变换自从上次标识是否被设置为false了?
localEulerAngles The rotation as Euler angles in degrees relative to the parent
transform's rotation.
旋转作为欧拉角度,相对于父级的变换旋转。
localPosition Position of the transform relative to the parent
transform.
相对于父级的变换的位置。
localRotation The rotation of the transform relative to the parent transform's
rotation.
该变换的旋转角度相对于父级变换的旋转角度。
localScale The scale of the transform relative to the parent.
相对于父级变换的缩放。
localToWorldMatrix Matrix that transforms a point from local space into world space
(Read Only).
变换点的矩阵从局部坐标到世界坐标(只读)。
lossyScale The global scale of the object (Read Only).
该对象的整体缩放(只读)。
parent The parent of the transform.
该变换的父对象。
position The position of the transform in world
space.
在世界空间坐标transform的位置。
right The red axis of the transform in world
space.
在世界坐标空间,变换的红色轴。也就是x轴。
root Returns the topmost transform in the hierarchy.
返回最高层级的变换。
rotation The rotation of the transform in world space stored as a
Quaternion.
在世界坐标空间,储存为四元数变换的旋转角度。
up The green axis of the transform in world
space.
在世界坐标空间,变换的绿色轴。也就是Y轴。
worldToLocalMatrix Matrix that transforms a point from world space into local space
(Read Only).
变换点的矩阵从世界坐标到局部坐标(只读)。

  Functions 函数

DetachChildren Unparents all children.、
所有子对象解除父子关系。
Find Finds a child by name and returns it.
通过名字查找子对象并返回它。
GetChild Returns a transform child by index.
通过索引返回一个变换的子对象。
GetSiblingIndex Gets the sibling index.
获取该对象的同级索引。
InverseTransformDirection Transforms a direction from world space to local space. The
opposite of
Transform.TransformDirection.
变换的方向从世界坐标转换到局部坐标。和Transform.TransformDirection相反。
InverseTransformPoint Transforms position from world space to local space. The opposite
of Transform.TransformPoint.
变换位置从世界坐标到局部坐标。和Transform.TransformPoint相反。
InverseTransformVector Transforms a vector from world space to local space. The opposite
of
Transform.TransformVector.
变换一个向量从世界坐标空间到局部坐标空间。这个操作与Transform.TransformVector相反。
IsChildOf Is this transform a child of
/parent/?
这个变换是parent的子对象?
LookAt Rotates the transform so the forward vector points at /target/'s
current position.
旋转此变换,让向前向量指向target的当前位置。(照相机的视口对准目标)
Rotate Applies a rotation of /eulerAngles.z/ degrees around the z axis,
/eulerAngles.x/ degrees around the x axis, and /eulerAngles.y/ degrees around
the y axis (in that
order).
应用一个欧拉角的旋转角度,eulerAngles.z度围绕z轴,eulerAngles.x度围绕x轴,eulerAngles.y度围绕y轴(这样的顺序)。
RotateAround Rotates the transform about axis passing through point in world
coordinates by angle degrees.
围绕世界坐标的point点的axis旋转该变换angle度。
SetAsFirstSibling Move the transform to the start of the local transfrom
list.
移动该变换到此局部变换列表的开始。
SetAsLastSibling Move the transform to the end of the local transfrom
list.
移动该变换到此局部变换列表的末尾。
SetParent Set the parent of the transform.
设置该变换的父级。
SetSiblingIndex Sets the sibling index.
设置同级对象的索引。
TransformDirection Transforms direction from local space to world
space.
变换方向从局部坐标转换到世界坐标。
TransformPoint Transforms position from local space to world
space.
变换位置从局部坐标到世界坐标。
TransformVector Transforms vector from local space to world space.
\\变换一个向量从局部坐标空间到世界坐标空间。
Translate Moves the transform in the direction and distance of translation.

移动transform在translation的方向和距离。 

U3D Transform用法的更多相关文章

  1. Raphael的transform用法

    Raphael的transform用法 <%@ page language="java" contentType="text/html; charset=UTF-8 ...

  2. css3动画2(transform用法)

    1.直接写在样式里,比如一个小箭头,transform:rotate(135deg)即可 2.写动画过程,@keyframes和transform和animation组合起来用 写在@keyframe ...

  3. U3D Transform组件

    Variables position Vector3类型,物体位置,相对于世界坐标系的值.就是矩阵的最后一行的值. localPosition Vector3类型,物体相对于父元素的位置. euler ...

  4. 也谈谈Unity的transform使用

    一.Transform和transform 我们来详谈Unity的transform使用,这里所说的tansform不是类UnityEngine命名空间下的Transform,而是transform. ...

  5. Akka(7): FSM:通过状态变化来转换运算行为

    在上篇讨论里我们提到了become/unbecome.由于它们本质上是堆栈操作,所以只能在较少的状态切换下才能保证堆栈操作的协调及维持程序的清晰逻辑.对于比较复杂的程序流程,Akka提供了FSM:一种 ...

  6. CSS布局方案

    居中布局 水平居中 1)使用inline-block+text-align 原理:先将子框由块级元素改变为行内块元素,再通过设置行内块元素居中以达到水平居中. 用法:对子框设置display:inli ...

  7. CSS 居中布局

    来源:http://www.cnblogs.com/QianBoy/p/8539077.html 水平居中 1)使用inline-block+text-align 原理:先将子框由块级元素改变为行内块 ...

  8. css3 制作一个遮罩

    思路:1.显示两块图片,2.图片区域(初始隐藏),3.鼠标移入,遮罩显示,此时遮住图片,4.鼠标移出,遮罩恢复初始状态 用到两个css3 属性:transtion ,transform 用法: 1. ...

  9. STL学习笔记(变动性算法)

    本节描述的算法会变动区间内的元素内容.有两种方法可以变动元素内容: 1.运用迭代器遍历序列的过程中,直接加以变动 2.将元素从源区间赋值到目标区间的过程中加以变动 复制(copy)元素 OutputI ...

随机推荐

  1. 分布式锁三种实现方式(DB,redis,zookeeper)比较

    先贴出看到的一篇博客,后续补充自己总结分析的. https://blog.csdn.net/u010963948/article/details/79006572

  2. myeclipse 自动部署web项目(自动编译)

    打开自动编译:project->build automatically; 注:以下两种方法适用tomcat配置在myeclipse中的情况. 1.如果在myeclipse中tomcat是以deb ...

  3. 深入理解定位父级offsetParent及偏移大小offsetTop / offsetLeft / offsetHeight / offsetWidth

    深入理解定位父级offsetParent及偏移大小 [转载] 前面的话 偏移量(offset dimension)是javascript中的一个重要的概念.涉及到偏移量的主要是offsetLeft.o ...

  4. line number is important in Exceptions.

    行号作为debug信息 在出现异常时可以迅速定位 package ztest; public class Test { public static void main(String[] args) { ...

  5. Reading | 《TensorFlow:实战Google深度学习框架》

    目录 三.TensorFlow入门 1. TensorFlow计算模型--计算图 I. 计算图的概念 II. 计算图的使用 2.TensorFlow数据类型--张量 I. 张量的概念 II. 张量的使 ...

  6. Android -Services 使用简介

    Android Services 四大组件之一,主要用于后台长时间运行.没有界面.这里讲解两种services的启动还有AIDL通信方式. 1.startservices a.建立继承services ...

  7. git-创建新项目

    1.一般第一次使用git,需要进行全局设置,如果下次创建新项目或者fork别人的项目,则不需要再进行设置:但是如果想要提交到不同的代码管理网站,则需要再设置,比如现在我的是在gitlab.com上进行 ...

  8. Django 通过 mongoengine 连接 MongoDB 进而使用orm进行CRUD

    一. 在python脚本中, 我们通常可以使用pymongo模块实现与mongodb数据库的交互, 但是在使用Django框架进行定制开发的web server 项目中, 仍然使用pymongo模块的 ...

  9. 简单登录注册实现(Java面向对象复习)

    简单登录注册的实现(面向对象的复习) 需求: 设计用户类,包含用户名和密码两个属性 设计LoginDemo类设计用户登录方法 用户有三次登录机会,如果连续三次登录失败则退出程序 功能实现页面:     ...

  10. python中使用双端队列解决回文问题

    双端队列:英文名字:deque (全名double-ended queue)是一种具有队列和栈性质的抽象数据类型. 双端队列中的元素可以从两端弹出,插入和删除操作限定在队列的两边进行. 双端队列可以在 ...