【龙图教育】UNITY 3D:如何让物体(自动)旋转

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

优缺点比较

变换矩阵

可以做各种复杂的变换,但是学习曲线比较大,使用的内存也比较多,因为存储的数据量比较大。

欧拉角

简单理解,尤其是对美术和策划的同事。运算速度和消耗内存比较少。可能存在万向锁的问题(两个轴的旋转重合)

四元数

避免了万向锁的问题。理解起来不是那么直接。

相关文档
最新文档