Unity3D中transform组件Roation变量详解

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值