Unity设置物体旋转角度误区
发表于2018-01-19
这个误区一般是新手容易出的错误,设置物体位置我们都是给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);(相对父级坐标旋转)
下面就是我们想实现的效果了