【龙图教育】UNITY 3D:如何让物体(自动)旋转
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【unity 3d】如何让物体(自动)旋转
Unity中的旋转。主要有三种方式。变换矩阵,四元数和欧拉角。
变换矩阵
可以执行任意的3d变换(平移,旋转,缩放,切边)并且透视变换使用齐次坐标。一般比较少用到。Unity中提供了一个Matrix4x4矩阵类
欧拉角
“用来确定定点转动刚体位置的3个一组独立角参量,由章动角θ、旋进角(即进动角)ψ
和自转角j组成”
在Unity中,Quaternion.eulerAngles 返回旋转的角度,绕z轴旋转euler.z角度,绕x 轴旋转euler.x度,绕y轴旋转euler.y度
四元数
“四元数是最简单的超复数。复数是由实数加上元素 i 组成,其中i^2 = -1。相似地,四元数都是由实数加上三个元素 i、j、k 组成,而且它们有如下的关系: i^2 = j^2 = k^2 = ijk = -1 , 每个四元数都是 1、i、j 和 k 的线性组合,即是四元数一般可表示为a + bi + cj + dk,其中a、b、c 、d是实数”。 Unity中的Quaternion有4个组件(x,y,z,w)
unity3D中基本的旋转我们可以用脚本内置旋转函数transform.Rotate()来实现。 void Rotate (eulerAngles : Vector3, relativeTo : Space = Space.Self)
但是当我们希望对旋转角度进行一些计算的时候,就要用到四元数Quaternion了。Quaternion的变量中xyzw的取值范围是[-1,1],物体并不是旋转一周就所有数值回归初始值,而是两周。
初始值: (0,0,0,1)
沿着y轴旋转:180°(0,1,0,0) 360°(0,0,0,-1)540°(0,-1,0,0) 720°(0,0,0,1)
沿着x轴旋转:180°(-1,0,0,0) 360°(0,0,0,-1)540°(1,0,0,0) 720°(0,0,0,1)
无旋转的写法是Quaternion.identify
优缺点比较
变换矩阵
可以做各种复杂的变换,但是学习曲线比较大,使用的内存也比较多,因为存储的数据量比较大。
欧拉角
简单理解,尤其是对美术和策划的同事。运算速度和消耗内存比较少。可能存在万向锁的问题(两个轴的旋转重合)
四元数
避免了万向锁的问题。理解起来不是那么直接。