Unity设置物体旋转角度误区

发表于2018-01-19
评论0 1.26w浏览
这个误区一般是新手容易出的错误,设置物体位置我们都是给transform.position赋值,那么问题来了,设置物体的旋转角度,我们就顺势给 transform.rotation 赋值了,额,那么就错了,其实 transform.rotation 是一个四元数(Quaternion),他需要一个转化才能达到我们想要的角度。

下面有两种方法来改变我们物体的旋转角度。

1. transform.rotation = Quaternion.Euler(new Vector3(0,90,0));

这种方法改变的是世界坐标的旋转,所以当包含它的脚本挂载放到某个对象的子节点下,并且父节点的rotation 不是(0,0,0,)时,就会出现Bug,,,无论如何都实现不出想要的效果。

eg:假设父节点如图,

子节点如图,


我们想把子节点围绕Y轴旋转90,还调用上面的代码,就会出现下面图片中的问题


那如何实现呢,接下来介绍第二种旋转方法。

2. 给 transform.eulerAngles 赋值。

transform.eulerAngles = new Vector3(0,90,0);(相对世界坐标,与1介绍的表现效果相同)

当想实现子节点旋转时,使用 

transform.localEulerAngles = new Vector3(0,90,0);(相对父级坐标旋转)

下面就是我们想实现的效果了

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引