【Unity学习笔记】Quaternion类

声明:此篇文章是个人学习笔记,并非教程,所以内容可能不够严谨。可作参考,但不保证绝对正确。如果你发现我的文章有什么错误,非常欢迎指正,谢谢哦。

官方API: https://docs.unity3d.com/ScriptReference/Quaternion.html

Quaternion类简介
四元数(Quaternion)用于表示旋转,它由四个单独的值wxyz组成,但我们使用时几乎不会单独获取或赋值单独一个值,通常是通过调用Unity提供的API来对一个四元数整体进行操作。四元数不会像欧拉角一样出现万向锁,所以适合进行插值。最常用的函数有:
Quaternion.LookRotation, Quaternion.Angle, Quaternion.Euler, Quaternion.Slerp, Quaternion.FromToRotation, and Quaternion.identity。

静态属性

identity无旋转,将它赋值给transform.rotation表示把物体的旋转设置为0(让局部坐标系和惯性坐标系重合)

属性

eulerAngles返回这个旋转代表的等价欧拉角
normalized返回单位四元数(类似单位向量)

Public函数

SetFromToRotation将此Quaternion对象的值设为 第一个参数向量旋转至第二个参数向量的旋转值

静态函数

Angle返回两个旋转 a 和 b 之间的角度
AngleAxis返回一个绕指定轴旋转指定角度的四元数
Dot两个旋转的点积
Euler返回一个旋转,它围绕 z 轴旋转 z 度、围绕 x 轴旋转 x 度、围绕 y 轴旋转 y 度(按该顺序应用)。要注意的是,如果借用此值来实现逐帧增加/减小、插值等可能会因为万向锁而出现和预期效果不一样的结果。
FromToRotation创建一个从 fromDirection 旋转到 toDirection 的旋转。
Inverse返回 rotation 的反转。
Lerp插值

向量点积和叉积:https://www.bilibili.com/read/cv4968127/

*运算符:推荐文章
1: operator* (lhs : Quaternion, rhs : Quaternion): Quaternion
返回一个四元数,其值为先应用lhs旋转,再接着应用rhs旋转。二者有顺序,所以不满足交换律,也就是说lhsrhs ≠ rhslhs。
也可以使用*=号

 float angle = rotateSpeed * Time.deltaTime;
 transform.rotation *= Quaternion.AngleAxis(angle, Vector3.up);

这段代码表示让物体绕自身Y轴旋转

2:operator* (rotation : Quaternion, point : Vector3): Vector3
表示对于一个向量应用旋转

        Vector3 dir = new Vector3(0, 10, 0);
        Vector3 result = transform.rotation * dir;

dir是世界坐标系下的向量(0,10,0)
因为transform.rotation表示对dir应用一个旋转,这个旋转和transform对应物体的旋转角度完全一样,所以result是transform对应物体的局部坐标系下的向量(0,10,0)

更多函数请看官方API: https://docs.unity3d.com/ScriptReference/Quaternion.html

关于四元数Quaternion的推荐文章:
四元数和欧拉角
Quaternion类详解

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值