Euler

public static Quaternion Euler(float x, float y, float z);
public static Quaternion Euler(Vector3 euler);
功能: 返回Quaternion对应的欧拉角
例子:
public class ExampleClass : MonoBehaviour {public Quaternion rotation = Quaternion.Euler(0, 30, 0);
}public class ExampleClass : MonoBehaviour {public Quaternion rotation = Quaternion.Euler(new Vector3(0, 30, 0));
}

ToAngleAxis 返回物体的旋转角度信息

public void ToAngleAxis(out float angle, out Vector3 axis);
参数: angle 旋转的角度
axis 旋转轴,不一定是x,y,z轴

AngleAxis 创建围绕轴旋转某个角度的四元数

public static Quaternion AngleAxis(float angle, Vector3 axis);

参数: angle 旋转的角度
axis 旋转轴,不一定是x,y,z轴
例子:
如果我们想使a,b两物体的旋转一样,可以这么做
public class ToAngleAxis : MonoBehaviour {// Use this for initializationprivate float angle = 0.0F;private Vector3 axis = Vector3.zero;public GameObject a;public GameObject b;void Start () {a.transform.rotation.ToAngleAxis(out angle, out axis);b.transform.rotation = Quaternion.AngleAxis(angle, axis);}
}

SetLookRotation 设置Quaternion实例的朝向

public void SetLookRotation(Vector3 view, Vector3 up = Vector3.up)
参数: view 朝向的向量
up 向上的方向
例子:我们使一个物体朝向另一个物体
代码:
public class SetLookRotation: MonoBehaviour {public Transform target;void Start() {Vector3 relativePos = target.position - transform.position;Quaternion rotation = Quaternion.identity;rotation.SetLookRotation(relativePos,transform.up);transform.rotation = rotation;}
}

LookRotation 设置Quaternion实例的朝向

public static Quaternion LookRotation(Vector3 forward, Vector3 upwards = Vector3.up);
参数: forward 朝向的向量
up 向上的方向

public class LookRotation : MonoBehaviour {public Transform target;void Start() {Vector3 relativePos = target.position - transform.position;Quaternion rotation = Quaternion.LookRotation(relativePos);transform.rotation = rotation;}
}

效果

SetFromToRotation

public void SetFromToRotation(Vector3 fromDirection, Vector3 toDirection);

功能: 用于创建从fromDirection到toDirection的rotation。设有以下代码:
Quaternion q1 = Quaternion.identity;
q1.SetFromToRotation(v1,v2);
transform.rotation = q1;
则相当于将GameObject对象进行如下变换: 首先将GameObject对象自身坐标系的x,y,z轴方向
和世界坐标系的x,y,z轴方向一致, 然后将GameObject对象自身坐标系中向量v1指向的方向旋转到v2方向。

FromToRotation

和 SetFromToRotation功能一样,只是用法不一样

Lerp 线性插值

public static Quaternion Lerp(Quaternion a, Quaternion b, float t);

功能:返回从a到b的线性插值,该方法速度比Slerp快
例子:
我们创建两个Cube,使其中一个Cube的朝向(z轴方向)指向另一个Cube
代码:
public class t_Quaternion_Slerp : MonoBehaviour {public Transform to;public float speed = 0.1F;Vector3 targetVector;Quaternion targetQuaternion = Quaternion.identity;void Start() {targetVector = to.position - transform.position;targetQuaternion = Quaternion.LookRotation(targetVector);}void Update(){transform.rotation = Quaternion.Lerp(transform.rotation, targetQuaternion,Time.deltaTime);}
}

效果:

Slerp 球面插值
public static Quaternion Slerp(Quaternion a, Quaternion b, float t);

功能:返回从a到b的球面插值

Quaternion类相关推荐

  1. 【Unity】6.8 Quaternion类(四元数)

    分类:Unity.C#.VS2015 创建日期:2016-04-20 一.四元数的概念 四元数包含一个标量分量和-个三维向量分量,四元数Q可以记作: Q=[w,(x,y,z)] 在3D数学中使用单位四 ...

  2. Unity3D - 详解Quaternion类

    一.简介 Quaternion又称四元数,由x,y,z和w这四个分量组成,是由爱尔兰数学家威廉·卢云·哈密顿在1843年发现的数学概念.四元数的乘法不符合交换律.从明确地角度而言,四元数是复数的不可交 ...

  3. Unity3D - 详解Quaternion类[转载]

    一.简介 Quaternion又称四元数,由x,y,z和w这四个分量组成,是由爱尔兰数学家威廉·卢云·哈密顿在1843年发现的数学概念.四元数的乘法不符合交换律.从明确地角度而言,四元数是复数的不可交 ...

  4. Quaternion类之美

    Quaternion类 Quaternion类又称四元数,由x, y, z, w 4个分量组成,属于struct类型. Unity中用其存储和表示对象的旋转角度 Quaternion的变换较为复杂,对 ...

  5. 用C++实现一个Quaternion类

    提要 四元素是游戏开发中常用的用于处理旋转的数学工具,下面就用C++来实现一个四元素类.参考Unity中四元素的接口. 如果没有看之前的 彻底搞懂四元数, 建议先看一下. 代码清单 Quaternio ...

  6. Unity API常用方法和类

    什么是API?--预先设置好的编程接口 事件函数及常用脚本 事件函数的执行顺序 具体可参考:docs.unity.cn/cn/current/Manual/ExecutionOrder.html *函 ...

  7. 《UnityAPI.Quaternion四元数》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Quaternion+Angle+Dot+Euler+立钻哥哥++OK++)

    <UnityAPI.Quaternion四元数> 版本 作者 参与者 完成日期 备注 UnityAPI_Quaternion_V01_1.0 严立钻 2020.07.10 #<Uni ...

  8. Unity API常用方法和类的解析

    一.事件函数执行的先后顺序 FixedUpdate每秒执行固定次数,应该将处理跟物理相关的运动的代码放在FixedUpdate中. Update和LateUpdate跟硬件和代码性能有关,每秒执行次数 ...

  9. Unity中的一些重要函数和类的解析

    下面的这些函数在Unity3d程序开发中具有很重要的作用. Update 当MonoBehaviour启用时,其Update在每一帧被调用. LateUpdate 当Behaviour启用时,其Lat ...

最新文章

  1. 搭建服务器环境 安装jdk、mysql、Tomcat 以及配置https 记录
  2. 用createrepo命令创建自己的yum源
  3. 重装MAC系统 “安装器有效负载签名检查失败” 解决方法
  4. 使用OpenCV计算图像的轮廓矩的代码
  5. cisco路由器基本命令配置
  6. 鸟哥的Linux私房菜(基础篇)- 第十五章、磁碟配额(Quota)与进阶文件系统管理
  7. 数据结构---邻接矩阵的DFS
  8. MongoDB性能测试
  9. 乔安监控云存储能存多长时间_干货 | 监控磁盘阵列知识介绍,不了解还不来看看?...
  10. python核心编程第六章练习6-12
  11. 关于浏览器中copy, cut, paste捕获的总结
  12. “颠覆”——物联网 + 大数据 + 云计算+ 网络互连
  13. 坦然面对:应对前端疲劳
  14. 西门子博途TIA PORTAL硬件目录中无法找到CPU的固件版本时,如何下载项目数据?
  15. python是跨平台语言吗_python可以跨平台么
  16. 阿里云香港服务器带宽太贵怎么办?香港节点全球CDN加速你值得拥有
  17. 【ppt入门教程】PowerPoint课件发布全攻略
  18. 华为手机桌面角标开发
  19. 苏、陕、宁、浙四省主动安全防控/智能视频监控预警设备平台一览
  20. 多路温度采集控制系统(2)需求分析

热门文章

  1. raid技术基本原理
  2. 在linux下怎么打包直接运行的node-webkit桌面应用
  3. 一键卸载cad,强力卸载cad,强力删除autodesk,完美卸载max,彻底卸载revit,彻底删除autodesk的任何软件
  4. c语言解决方程的论文,c语言编程求解线性方程组论文1.doc
  5. java搭建o2o平台_java版 spring cloud+mybatis 构建 b2b2c o2o 多租户电子商务平台
  6. [原创]Fashion汽车定位器拆解
  7. 程序设计综合实践 2.1
  8. 大促活动前团购系统流量预算和容量评估
  9. 身份证号码正则表达式详解
  10. SSR 它到底香不香?细数 SSR 的利与弊