- 最后登录
- 2019-12-2
- 注册时间
- 2012-8-25
- 阅读权限
- 90
- 积分
- 34660
- 纳金币
- 38268
- 精华
- 111
|
一、先看下对localEulerAngles的解释http://www.unitymanual.com/m/Script/index.htm,自身欧拉角,说这是对象自己相对于父对象的旋转角度,该变量可用于读取和设置该角度。不可以用于递增,角度超过360度将会失效(不懂)。
创建一个cube对象并reset,创建一个测试脚本绑定到该cube对象上,在脚本的start方法中设置cube对象的欧拉角,形如:
transform.localEulerAngles = new Vector3(0, 0, 0);
经过几番测试如下:
1、transform.localEulerAngles = new Vector3(0, 0, 0);物体的旋转方向是默认的方向。
2、transform.localEulerAngles = new Vector3(90, 0, 0);沿x轴指向看,逆时针旋转90度。
3、transform.localEulerAngles = new Vector3(0, 90, 0);沿y轴指向看,逆时针旋转90度。
4、transform.localEulerAngles = new Vector3(0, 0, 90);沿z轴指向看,逆时针旋转90度。
如果将以上的角度改成负数,沿着改变轴的指向看,将会是顺时针方向。
4、测试下文档上说的不能对其递增。在update方法里每帧沿z方向的角度多加1度,看下效果。发现能一直旋转,变量值一直增加,transform里R的z参数在[-180,180]之间变化。
5、现在测试下,相对于父对象的旋转。创建一个空物体,作为上面的cube的父对象,将空物体沿z轴随意旋转一个角度,此时cube的角度与空物体完全一样。start方法中添加 transform.localEulerAngles = new Vector3(0, 0, 90);另cube对象旋转,我们来看看效果。
空物体如图
分下面两种情况:
1)cube对象不做任何更改,此时与父物体的角度完全一样。旋转后如下
与上图的父对象对比,以及与右上角的坐标轴对比,好像它相对于自己旋转也能说得通,相对于父对象旋转也能说得通。
2)这次我们将cube对象沿z轴旋转一个角度,旋转后不与父对象重合。
启动项目,旋转后如下:
发现与上面的1)里的一模一样,说明cube旋转的角度由其父对象的角度决定。
|
|