Unity3D中transform组件Roation变量详解

  • Post author:
  • Post category:其他

Unity3D中transform组件是最基础的也是最重要的物体属性,transform面板中有Position,Rotation,Scale三个属性.今天我在赋值参数的时候发现transform组件中的rotation输出的值和面板中显示的(X,Y,Z)三个参数不一样,而且输出的是四个参数,如下图:

void Start ()
    {
        Debug.Log(transform.rotation);
	}

unity输出结果为:
在这里插入图片描述
在这里插入图片描述
可以看出在面板中显示的和输出的值完全不一样~
我看了一下官方开发手册才明白,Unity脚本中的变量 transform.rotation 是一个四元数Quaternion类型(可以避免万象死锁),有x、y、z、w参数,它和你在Unity面板中看到的物体的Rotation没有任何关系。x、y、z、w参数不是按度数存储的,而是一些角度的sin值和cos值,按度数存储的rotation则是存储在.eulerAngles属性中(Vector3类型)。因此,如果你想直接调用transform中的X,Y,Z三个参数,那么需要在脚本中写入transform.eulerAngles。那我们来看一下结果:

void Start ()
    {
        Debug.Log(transform.eulerAngles);
	}

在这里插入图片描述在这里插入图片描述
transform.eulerAngles输出的值是相对其父物体进行衡量的,如果此物体没有父物体,这些属性则相对于世界坐标进行计算。

至于四元数和欧拉角如何转换涉及到数学问题我也没怎么搞清楚,可以看一下,下面这篇文章写的很好:https://www.cnblogs.com/lvdongjie/p/5384747.html


版权声明:本文为ZJ_____W原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。