unity3d中Transform组件Rotate()和rotation变量详解
Transform组件是每个游戏对象必须有的⼀个组建,因为你创建⼀个空物体,它也有该组建,因为unity3d是⾯向组建开发的⼀款游戏引擎。通过⼀张图⽚来看看它的属性
你可以在通过代码查看这些属性的区别
上⾯提到了⽗位置?那是什么意思呢?
现在创建两个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()还可以通过插值旋转,
关于插值的理解:rotate属性

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。