美文网首页
unity三种旋转方式localEulerAngles、rota

unity三种旋转方式localEulerAngles、rota

作者: 52031d47791e | 来源:发表于2018-11-08 08:49 被阅读0次

    1   transform.localEulerAngles

    使用localEulerAngles进行旋转的时候,我们要使用transform.localEulerAngles = new Vector3(x, y,z); 其中,new Vector(x,y,z)为游戏物体最终旋转到的目标角度,x.y,z的值分别都是以0为基准,假设游戏物体的初始角度为(x1,y1,z1),则游戏物体从(x1,y1,z1)旋转到(x,y,z),同时也以自身坐标系为参考,而不是世界坐标系。

    2  transform.rotation

    //将欧拉旋转角转换为四元素旋转角

    Quaternion rotation= Quaternion.Euler(new Vector3(x, y,z));

    Transform.rotation=rotation;

     new Vector(x,y,z)为游戏物体最终旋转到的目标角度,x.y,z的值分别都是以0为基准,假设游戏物体的初始角度为(x1,y1,z1),则游戏物体从(x1,y1,z1)旋转到(x,y,z),,同时也以自身坐标系为参考,而不是世界坐标系。

    3  transform.Rotate(参数)

    transform.Rotate(x,y,z):以自身坐标系为参考,而不是世界坐标系,分别以x度y度z度绕X轴、Y轴、Z轴匀速旋转

    transform.Rotate(轴,Space.Self):以自身坐标系为参考

    Transform.Rotate(轴,Space.World):以世界坐标系为参考

    现在创建两个cube 命名为cube1和cube2 把cube2作为cube1的子对象,如图。

    可以看到,cube1的坐标(1,0,0) cube2的坐标为(0,0,5)

    那么通过transform.localPosition获取cube2的坐标则为(0,0,5)

    如果用transform.position获取cube2的坐标则为(1,0,5)

    那么写个脚本测试下。写个脚本挂载到cube2上

    在脚本的Start方法中如下写

    运行后看结果

    因为:cube2把父对象(Cube1)当作了自己的的中心。所以是(0,0,5),那它的世界坐标则为(1,0,5),知道了这个position那localRotation也是同样的道理

    但有没有注意到。这里的欧拉角(eulerAngles),rotation和Rotate(),都是用于旋转,那他们有什么区别呢。刚开始我也是犯糊涂

    Rotate()方法需要一个vector3三维向量,rotation是用四元素旋转(Quaternion)

    来看看圣典上面的解释:

    欧拉角(eulerAngles)旋转很好理解。当你改变Transform组建中的 x,y,z的角度。就是改变其欧拉角

    现在来看看rotation属性和Rotate()方法之间有什么区别

    我认为通过测试是对两者差异的最好理解。

    先看Rotate()方法

    在场景中创建一个Capsule,写个脚本。代码如下

    可以看到对象是旋转一直是在累加5,如果你感觉不出来

    然后用旋转同样的角度。测试rotation属性

     从上图可以看出,Capsule旋转到5就不动了。也就是每次旋转都是同样的值,

    Rotate()方法是:旋转多少度。在原有的基础上累加,即旋转了多少角度。又旋转了多少角度,是在原有的基础上在旋转

    rotation属性是:旋转到某个角度,就是是在update中每帧都执行(我这里测试是放在了update中)。但每次旋转到的角度动是5,所以是旋转到5度。一直都是

    比如你只想让他旋转到多少,用rotation;假如想让他一直转,可以用Rotate

    rotation直接改变了数值,以达到旋转效果

    Rotate应用一个的旋转角度每秒1度慢慢的旋转物体

    当然:rotation()还可以通过插值旋转,

    相关文章

      网友评论

          本文标题:unity三种旋转方式localEulerAngles、rota

          本文链接:https://www.haomeiwen.com/subject/yesixqtx.html