UnityAPI的学习——Quaternion类

Quaternion又称为四元数,由x、y、z和w这4个分量组成,属于struct类型。

在Unity中,用Quaternion来存储和表示对象的旋转角度。

Quaternion类实例属性

在Quaternion类中,涉及的实例属性主要有eulerAngles

eulerAngles属性:欧拉角

基本语法

csharp 复制代码
public Vector3 eulerAngles{ get; set; }

功能说明:此属性用来返回或设置Transform实例对应的欧拉角

1、对GameObject对象的Transform进行欧拉加的变换次序,先绕z轴旋转相应的角度,再绕x轴旋转相应的角度,最后再绕y轴旋转相应的角度。

2、对GameObject对象的旋转角进行赋值的方式通常有两种:第一种是将Quaternion实例赋值给transform的rotation;第二种是将三维向量代表的欧拉角直接赋值给transform的eulerAngles。

Quaternion类实例方法

在Quaternion类中涉及的实例方法有SetFromToRotation方法、SetLookRotation方法和ToAngleAxis方法。

SetFromToRotation方法:创建rotation实例

基本语法

csharp 复制代码
public void SetFromToRotation(Vector3 fromDirection ,Vector3 toDirection);

功能说明:此方法用于创建一个从fromDirection到toDirection的rotation。

SetLookRotation方法:设置Quaternion实例的朝向。

基本语法

csharp 复制代码
1、public void SetLookRotation(Vector3 view);
2、public void SetLookRotation(Vector3 view , Vector3 up);

功能说明:此方法的功能是对一个Quaternion实例的朝向进行设置。

ToAngleAxis方法:Quaternion实例的角轴表示

基本语法

csharp 复制代码
public void ToAngleAxis(out float angle ,out Vector3 axis);
其中参数angle为旋转角,参数axis为轴向量

功能说明

此方法用于将Quaternion实例转换角轴表示。

Quaternion类静态方法

在Quaternion类中涉及的静态方法有Angle方法、Dot方法、Euler方法、FromToRotation方法、Inverse方法、Lerp方法、LookRotation方法、RotateTowards方法和Slerp方法。

Angle方法:Quaternion实例间夹角

基本语法

csharp 复制代码
public static float Angle(Quaternion a ,Quaternion b);

功能说明

此方法用于返回从参数a到参数b变换的夹角。

Dot方法:点乘

基本语法

csharp 复制代码
public static float Dot(Quaternion a,Quaternion b);

功能说明

此方法用于求参数a和b的点乘

Euler方法:欧拉角对应的四元数

基本语法

csharp 复制代码
1、public static Quaternion Euler(Vector3 euler);
2、public static Quaternion Euler(float x,float y,float z);

功能说明

此方法用于返回欧拉角Vector3(x,y,z)对应的四元数Quaternion实例。

FromToRotation方法:Quaternion变换

基本语法

csharp 复制代码
public  static Quaternion FromToRotation(Vector3 fromDirection ,Vector3 toDirection);

功能说明

此方法用来创建一个从参数fromDirection到toDirection的Quaternion变换。

Inverse方法:逆向Quaternion值

基本语法

csharp 复制代码
public static Quaternion Inverse(Quaternion rotation);

功能说明

此方法用于返回参数rotation的逆向Quaternion值。

Lerp方法:线性插值

基本语法

csharp 复制代码
public static Quaternion Lerp(Quaternion from ,Quaternion to , float t);

功能说明

此方法用于返回从参数from到to的线性插值

LookRotation方法:设置Quaternion的朝向

基本语法

csharp 复制代码
1、public static Quaternion LookRotation(Vector3 forward);
2、public static Quaternion LookRotation(Vector3 forward ,Vector3 upwards);
其中参数forward为返回Quaternion的forward朝向

功能说明

此方法用于返回一个Quaternion实例,使GameObject对象的z轴朝向参数forward方向。

RotateTowards方法:Quaternion插值

基本语法

csharp 复制代码
public static Quaternion RotateTowards(Quaternion from ,Quaternion to , float maxDegreesDelta);
其中参数from为起始Quaternion,参数to为结束Quaternion,参数maxDegreesDelta为每帧最大角度值

功能说明

此方法用于返回从参数from到to的插值,且返回值的最大角度不超过maxDegreesDelta。

Slerp方法:球面插值

基本语法

csharp 复制代码
public static Quaternion Slerp(Quaternion from ,Quaternion to ,float t);

功能说明

此方法用于返回从参数from到to的球面插值

Quaternion类运算符

在Quaternion类中涉及的运算符运算有两个Quaternion实例相乘的运算,一个Quaternion实例和一个Vector3相乘的元素

operator *(lhs : Quaternion , rhs: Quaternion)

功能说明

此运算符用于返回两个Quaternion实例相乘后的结果

operator *(rotation : Quaternion , point : Vector3)

功能说明

此运算符的作用是对参数坐标点point进行rotation变换

相关推荐
三品吉他手会点灯5 小时前
C语言学习笔记 - 20.C编程预备计算机专业知识 - 变量为什么必须的初始化【重点】
c语言·笔记·学习
sakiko_5 小时前
UIKit学习笔记1-创建项目(使用UIKit)、使用组件
笔记·学习
生信碱移5 小时前
PACells:这个方法可以鉴定疾病/预后相关的重要细胞亚群,作者提供的代码流程可以学习起来了,甚至兼容转录组与 ATAC 两种数据类型!
人工智能·学习·算法·机器学习·数据挖掘·数据分析·r语言
星幻元宇VR7 小时前
VR航空航天科普设备【VR时空直升机】
科技·学习·安全·生活·vr
_李小白8 小时前
【android opencv学习笔记】Day 2: Mat类(图片数据结构体)
android·opencv·学习
harder3219 小时前
RMP模式的创新突破
开发语言·学习·ios·swift·策略模式
程序猿乐锅10 小时前
【Tilas|第三篇】多表SQL语句
数据库·经验分享·笔记·学习·mysql
徐某人..10 小时前
基于i.MX6ULL平台的智能网关系统开发
arm开发·c++·单片机·qt·物联网·学习·arm
AOwhisky10 小时前
Kubernetes 学习笔记:集群管理、命名空间与 Pod 基础
linux·运维·笔记·学习·云原生·kubernetes
光影少年11 小时前
大屏页面,一次多个请求,请求加密导致 点击 全局时间选择器 时出现卡顿咋解决(面板收起会延迟1~2秒)
前端·javascript·vue.js·学习·前端框架·echarts·reactjs