8.2.3 ToAngleAxis方法:Quaternion实例的角轴表示
基本语法:public voidToAngleAxis(out float angle, out Vector3 axis);
其中参数angle为旋转角;参数axis为轴向量。
功能说明:此方法用于将Quaternion实例转换为角轴表示。在transform. rotation.ToAngleAxis(out angle, out axis)中输出值angle和axis的含义为:要将GameObject对象的rotation从Quaternion.Identity状态变换到当前状态,只需要将GameObject对象绕着axis的轴向(指世界坐标系中)旋转angle角度即可。
提示:此方法通常和静态方法AngleAxis (angle: float, axis : Vector3)联合使用,使得一个物体的rotation始终和另一个物体的rotation保持一致。
实例演示:下面通过实例演示方法ToAngleAxis的使用。
using UnityEngine;
using System.Collections;
public class ToAngleAxis_ts : MonoBehaviour {
public Transform A, B;
float angle;
Vector3 axis = Vector3.zero;
void Update () {
//使用ToAngleAxis获取A的Rotation的旋转轴和角度
A.rotation.ToAngleAxis(out angle, out axis);
//使用AngleAxis设置B的rotation,使得B的rotation状态的和A相同
//当然也可以只使得B与A的axis相同,而angle不同
//可以在程序运行时修改A的rotation查看B的状态
B.rotation = Quaternion.AngleAxis(angle,axis);
}
}
在这段代码中首先声明了两个GameObject类型的变量A和B,用于指向场景中的物体,然后在Update方法中首先调用ToAngleAxis方法将A的rotation转换为角轴angle和axis,接着调用方法AngleAxis将角轴代表的Quaternion值赋给B.rotation。程序运行时可以在Inspector面板或Scene视图中随便修改A的旋转角,然后查看物体B的跟随旋转状态,请读者自行运行程序查看。
本文章摘自图书《Unity API解析》,源码下载地址:http://www.ituring.com.cn/book/1474