Unity3D与旋转相关的函数(C#)
1)void Rotate(Vector3 eulerAngles, float relativeTo)
应用一个欧拉角的旋转角度,eulerAngles.z度围绕z轴,eulerAngles.x度围绕x轴,eulerAngles.y度围绕y轴(这样的顺序)。
如果relativeTo留空或者设置为Space.Self 旋转角度被应用围绕变换的自身轴。(当在场景视图选择物体时,x、y和z轴显示)如果是Space.World 旋转角度被应用围绕世界的x、y、z轴。
2)void SetFromToRotation (Vector3 fromDirection, Vector3 toDirection)
把物体的fromDirection旋转到toDirection
3)void SetLookRotation(Vector3 view);
void SetLookRotation(Vector3 view,Vector3 up);
这个函数根据指定的向前和向上向量创建四元数,建立一个旋转使z轴朝向view, y轴朝向up。
4)static Quaternion AngleAxis(float angle,Vector3 axis)
物体沿指定轴向axis旋转角度angle。
5)Quaternion.eulerAngles
存放四元数对应的三个轴向的欧拉角,分别是绕x轴、y轴、z轴旋转的角度
6)static Quaternion FromToRotation(Vector3 fromDirection,Vector3 toDirection);
根据两个向量计算出旋转量,计算出来的旋转量为从fromDirection旋转到toDirection的旋转量,跟SetFromToRotation差不多,区别是可以返回一个Quaternion。通常用来让transform的一个轴向(例如 y轴)与toDirection在世界坐标中同步。
7)static Quaternion LookRotation(Vector3 forward);
static Quaternion LookRotation(Vector3 forward,Vector3 upwards);
使用指定的向前方向和向上方向来创建四元数,跟SetLootRotation差不多,区别是可以返回一个Quaternion。
8)static Quaternion RotateTowards(Quaternion from,Quaternion to, float maxDegreesDelta);
以maxDegreesDelta作为角度步长计算从from到to之间的旋转量
9)static Quaternion Slerp (Quaternion from : Quaternion to, float t)
球形插值, 从from转换到to,移动距离为t。当两个quaternion接近时,转换的速度会比较慢。
10)static Quaternion Lerp (Quaternion a, Quaternion b, float t)
跟Slerp相似,且比Slerp快,.但是如果旋转角度相距很远则会看起来很差
11)static Quaternion Inverse (Quaternion rotation) :
返回与rotation相反的方向
12)static float Angle (Quaternion a, Quaternion b)
计算两个旋转之间的夹角。跟Vector3.Angle() 作用一样。
13)static Quaternion Euler (float x, float y, float z)
把旋转角度变成对应的Quaternion
14)void ToAngleAxis (out float angle, out Vector3 axis)
返回物体的旋转角度(物体的z轴和世界坐标z轴的夹角)和三维旋转轴的向量到变量out angle 和out axis