查看: 5833|回复: 3
打印 上一主题 下一主题

[其他] Unity3d localEulerAngles的解释

[复制链接]

2722

主题

42

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
38268
精华
111

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2014-9-29 01:51:41 |只看该作者 |倒序浏览
一、先看下对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旋转的角度由其父对象的角度决定。

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

hyui    

1

主题

2

听众

6671

积分

高级设计师

Rank: 6Rank: 6

纳金币
2715
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2014-10-2 07:09:43 |只看该作者
very illustrated tutorial !
回复

使用道具 举报

115

主题

3

听众

5676

积分

高级设计师

Rank: 6Rank: 6

纳金币
7268
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

板凳
发表于 2014-10-2 09:33:48 |只看该作者
谢谢提醒与指导
回复

使用道具 举报

0

主题

2

听众

1346

积分

助理设计师

Rank: 4

纳金币
505
精华
0
地板
发表于 2014-10-4 16:01:47 |只看该作者
感谢分享与指导 之前不明白 现在刚好需用上
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-25 13:25 , Processed in 0.089382 second(s), 31 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部