Quaternion中ToAngleAxis和AngleAxis的含义和用法

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



版权声明:本文为QUAN2008HAPPY原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。