Transform组件是每个游戏对象必须有的一个组建,因为你创建一个空物体,它也有该组建,因为unity3d是面向组建开发的一款游戏引擎。通过一张图片来看看它的属性

你可以在通过代码查看这些属性的区别

        Debug.Log("position " + transform.position); //世界坐标的位置
Debug.Log("localPosition " + transform.localPosition); //相对于父位置的坐标 即把父物体当作自己的中心 Debug.Log("eulerAngles " + transform.eulerAngles);//世界坐标欧拉⾓度 Debug.Log("localEulerAngles " + transform.localEulerAngles);//相对于⽗级的变换的旋转欧拉⾓度 Debug.Log("localScale " + transform.localScale);//相对于父位置的缩放 Debug.Log("localRotation " + transform.localRotation);//相对于父位置的旋转 Debug.Log("rotation " + transform.rotation);//世界坐标的旋转

上面提到了父位置?那是什么意思呢?

现在创建两个cube 命名为cube1和cube2 把cube2作为cube1的子对象,如图。

可以看到,cube1的坐标(1,0,0) cube2的坐标为(0,0,5)

那么通过transform.localPosition获取cube2的坐标则为(0,0,5)

如果用transform.position获取cube2的坐标则为(1,0,5)

那么写个脚本测试下。写个脚本挂载到cube2上

在脚本的Start方法中如下写

void Start()
{
Debug.Log("cube2的世界坐标为:" + transform.position);
Debug.Log("cube2的本地坐标为:" + transform.localPosition);
}

运行后看结果

因为:cube2把父对象(Cube1)当作了自己的的中心。所以是(0,0,5),那它的世界坐标则为(1,0,5),知道了这个position那localRotation也是同样的道理

但有没有注意到。这里的欧拉角(eulerAngles),rotation和Rotate(),都是用于旋转,那他们有什么区别呢。刚开始我也是犯糊涂

Rotate()方法需要一个vector3三维向量,rotation是用四元素旋转(Quaternion)

来看看圣典上面的解释:

欧拉角(eulerAngles)旋转很好理解。当你改变Transform组建中的 x,y,z的角度。就是改变其欧拉角

现在来看看rotation属性和Rotate()方法之间有什么区别

我认为通过测试是对两者差异的最好理解。

先看Rotate()方法

在场景中创建一个Capsule,写个脚本。代码如下

void Update()
{ transform.Rotate(Vector3.up * ); }

运行看看效果:

可以看到对象是旋转一直是在累加5,如果你感觉不出来。我这里调试。一帧一帧给你看

然后用旋转同样的角度。测试rotation属性

    void Update()
{ transform.rotation = Quaternion.Euler(Vector3.up * ); }

同样看效果

从上图可以看出,Capsule旋转到5就不动了。也就是每次旋转都是同样的值,

所以:我的理解是:

Rotate()方法是:旋转多少度。在原有的基础上累加,即旋转了多少角度。又旋转了多少角度,是在原有的基础上在旋转

rotation属性是:旋转到某个角度,就是是在update中每帧都执行(我这里测试是放在了update中)。但每次旋转到的角度动是5,所以是旋转到5度。一直都是

比如你只想让他旋转到多少,用rotation;假如想让他一直转,可以用Rotate

rotation直接改变了数值,以达到旋转效果

Rotate应用一个的旋转角度每秒1度慢慢的旋转物体

当然:rotation()还可以通过插值旋转,

关于插值的理解:

http://www.unitymanual.com/blog-42778-2524.html?_dsign=7036aadd

unity3d中Transform组件变量详解的更多相关文章

  1. LotusPhp中配置文件组件LtConfig详解

    LotusPhp中配置文件组件LtConfig是约定的一个重要组成部分,适用于多个场景,多数的LotusPhp组件如数据库,缓存,RBAC,表单验证等都需要用到配置组件,LtConfig配置组件也是L ...

  2. Ubuntu中设置环境变量详解

    1, 为单一用户:.bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.打开用户主目录下的.bashrc,在这个文件中加入export PA ...

  3. Windows系统中path环境变量详解

    在学习JAVA的过程中,涉及到多个环境变量(environment variable)的概念,如PATH.正确地配置这些环境变量,是能够顺利学习.开发的前提.而经常出现的问题是:有的学习者能够按照提示 ...

  4. vSan中见证组件witness详解

    witness在vSan中作为见证组件其作用类似于WinServer中的仲裁磁盘,当Cluster中某一节点发生故障时,来判断该节点上的对象在哪一个新的节点上继续承载.此处需要强调的是,witness ...

  5. Objective-C中 Self和 Super详解

    Objective-C中 Self和 Super详解 Objective-C 中Self 和 Super 详解本文要介绍的内容,在 Objective-C 中的类实现中经常看到这两个关键字 self  ...

  6. iOS中MVC等设计模式详解

    iOS中MVC等设计模式详解 在iOS编程,利用设计模式可以大大提高你的开发效率,虽然在编写代码之初你需要花费较大时间把各种业务逻辑封装起来.(事实证明这是值得的!) 模型-视图-控制器(MVC)设计 ...

  7. c++中vector的用法详解

    c++中vector的用法详解 vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间 ...

  8. JScript中的条件注释详解(转载自网络)

    JScript中的条件注释详解-转载 这篇文章主要介绍了JScript中的条件注释详解,本文讲解了@cc_on.@if.@set.@_win32.@_win16.@_mac等条件注释语句及可用于条件编 ...

  9. Scala 深入浅出实战经典 第55讲:Scala中Infix Type实战详解

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt ...

随机推荐

  1. object cloning

    php.net <?php class SubObject { static $instances = 0; public $instance; public function __constr ...

  2. xcrun: error: unable to find utility "PackageApplication", not a developer tool or in PATH

    Xcode升级到8.3后 用命令进行打包 提示下面这个错误 xcrun: error: unable to find utility "PackageApplication", n ...

  3. [administrator][driver] driverctl 是如何在udev上层管理设备驱动的

    https://gitlab.com/driverctl/driverctl driverctl 处于 kernel 与 udev做设备与驱动管理的上层. 理解什么叫override是本文的核心内容. ...

  4. [daily][nfs] nfs客户端设置

    [daily] 主机间目录共享 1. 安装nfs工具,其实是mount需要mount.fs 否则会出现类似如下错误: [root@stds ~]# mount -t nfs 192.168.7.1:/ ...

  5. iOS将excel转plist

    iOS将excel转plist 先把excel用Numbers打开,转换成CSV,然后新建一个工程,写下面的代码: - (void)viewDidLoad { [super viewDidLoad]; ...

  6. bzoj 2563 [2012国家集训队Round 1 day2] 阿狸和桃子的游戏 贪心

    正解:贪心 解题报告: 链接在这儿! 知道解法之后会jio的好像很简单的样子……其实挺难想到的QAQ 不过大佬讲了方法之后还是懂了 有一个很神仙的想法就是,你可以理解为每个点周围的边都有半个是自己的, ...

  7. js禁用页面上右键菜单、选中和复制

    有时候我们不想页面上的内容被人复制走,那么就可以使用js对页面进行设置,禁止右键菜单.禁止选中.禁止复制等功能可以有效的达到这个效果,js代码如下所示: /** * 禁用右键菜单 */ documen ...

  8. BeanFactoryPostProcessor vs BeanPostProcessor

    BeanFactoryPostProcessors affect BeanDefinition objects because they are run right after your config ...

  9. gitlab数据库

    event表中action对应操作: 1 - 新建项目 5 - push 8 - 在某项目中赋予某人权限 9 - 在某项目中取消某人权限

  10. 20190316 安装pip的一些问题

    前提条件: 1. windows环境中安装python3.7 2.注意配置环境变量 确认python.和pip都能直接在cmd 控制台使用, 一个是python命令的地址指向,一个是pip命令的地址指 ...