【Unity】Unity常用类:向量Vector3、四元数Quaternion

article/2025/10/31 3:08:36

文章目录

  • Vector3
    • 构造函数
    • 静态变量
    • 变量
    • 运算符
    • 常用方法(静态)
      • OrthoNormalize(正交标准化)
      • Reflect(反射)
      • Lerp(线性插值)
  • Quaternion
    • 构造函数
    • 静态变量
    • 变量
    • 常用方法
      • Eular(欧拉角转四元数)
      • 四元数转欧拉角
      • AngleAxis
      • LookRotation
      • Angle
      • FromToRotation
    • 运算符


Vector3

Vector3类是Unity常用类之一,通常用来表示3D向量和点,有时也可以用来表示欧拉旋转。Vector3使用给定的 x、y、z 分量创建新向量。

构造函数

public Vector3 (float x, float y, float z);

静态变量

Vector3提供了一些静态变量,方便使用常用的方向,例如Vector3.up代表了Vector3(0, 1, 0)。
在这里插入图片描述

变量

变量名作用
magnitude返回该向量的长度。(只读)
normalized返回 magnitude 为 1 时的该向量。(只读)
sqrMagnitude返回该向量的平方长度。(只读)
this[int]分别使用 [0]、[1]、[2] 访问 x、y、z 分量。
x向量的 X 分量。
y向量的 Y 分量。
z向量的 Z 分量。

运算符

在这里插入图片描述

常用方法(静态)

函数名作用
Angle返回 from 与 to 之间的角度 ( ± 180 ° ) (\pm180°) (±180°),以点乘方式计算。
ClampMagnitude返回 vector 的副本,其大小被限制为 /maxLength/。
Cross返回两个向量的叉积。
Normalize使该向量的长度变为 1。
Project向一条线做投影,将向量投影到另一个向量上。
ProjectOnPlane向一个平面做投影,将向量投影到由法线定义的平面上(法线与该平面正交)。第二个参数为垂直于要投影的面的向量
Dot两个向量的点积。
Lerp在两个点之间进行线性插值。
OrthoNormalize将向量标准化并使它们彼此正交。
Reflect从法线定义的平面反射一个向量。
MoveTowards匀速移动。计算 current 指定的点与 target 指定的点之间的位置,移动距离不超过 maxDistanceDelta 指定的距离。

OrthoNormalize(正交标准化)

OrthoNormalize (ref Vector3 normal, ref Vector3 tangent, ref Vector3 binormal);
标准化 tangent 并确保其与 normal 正交,binormal 为副向量。

空间中的点通常使用xyz轴系的坐标指定。但如果有任意三个向量为标准化向量(大小为1),且彼此正交(互相垂直),他们就可以被认定为轴。

正交标准化可以用来生成新的坐标系,但与正常坐标系不同的是,其正切向量与副向量是不固定的。

Reflect(反射)

从法线定义的平面反射一个向量。Vector3 Reflect (Vector3 inDirection, Vector3 inNormal);
在这里插入图片描述

Lerp(线性插值)

Lerp用于在两个点之间进行线性插值。

普通用法:由快到慢移动,且不能到达目标点。

// 起点不固定,终点和比例固定。
Vector3.Lerp(position, targetPosition, 0.1f);

起点不固定,终点和比例固定。

Lerp自然运动:需要结合AnimationCurve(动画曲线)类使用:

Vector3.Lerp(Vector3.zero, targetPosition, curveObj.Evaluate(0.1f));

此运动不会超过终点,使用LerpUnclamped方法可以超过终点。
Evaluate方法传入一个 x 会返回一个 y(运动曲线上的 y )。x到1后终止。

Quaternion

四元数用三个分量 x, y, z 和一个标量 w 来表示旋转。它们结构紧凑,不受万向锁影响,可以轻松插值。 Unity 内部使用四元数来表示所有旋转。

构造函数

public Quaternion (float x, float y, float z, float w);

使用给定的 x、y、z、w 分量构造新的四元数。

静态变量

identity:同一性旋转,与世界坐标保持一致。该四元数对应于“no rotation”- 对象与世界轴或父轴完全对齐。

例:用脚本创建物体,第三个参数角度可使用,使用后所创建的物体将于世界坐标一致。

变量

变量名作用
eulerAngles返回或设置旋转的欧拉角表示。
normalized返回 magnitude 为 1 时的该四元数。(只读)
this[int]分别使用 [0]、[1]、[2]、[3] 访问 x、y、z 、w 分量。
x四元数的 X 分量。除非您十分了解四元数,否则不要直接进行此种修改。
y四元数的 Y 分量。除非您十分了解四元数,否则不要直接进行此种修改。
z四元数的 Z 分量。除非您十分了解四元数,否则不要直接进行此种修改。
w四元数的 W 分量。请勿直接修改四元数。

常用方法

Eular(欧拉角转四元数)

用于将欧拉角转为四元数。
public static Quaternion Euler (float x, float y, float z);
x,y,z沿某个轴旋转多少度。

四元数转欧拉角

Quaternion qt = this.transform.rotation;
Vector3 eular = qt.eulerAngles;

AngleAxis

创建一个围绕 axis 旋转 angle 度的旋转。

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

AngleAxis(50, Vector3.up) 与 Eular(0, 50, 0) 作用相同。但如果旋转轴不是主轴,则Eular无用。

LookRotation

获取注释旋转的角度,如直接将角度赋值给Transform,则与调用 LookAt 方法效果相同。如果使用Lerp等方法动态做旋转,则可实现曲线运动,Look只管 z 轴。

Angle

获取两个四元数之间的角度。返回两个旋转 a 和 b 之间的角度(以度为单位)。

FromToRotation

创建一个从 fromDirection 旋转到 toDirection 的旋转。

public static Quaternion FromToRotation (Vector3 fromDirection, Vector3 toDirection);

通常使用此方法来做轴旋转(对Transform进行转转),使其一个轴(如 y 轴)跟随世界空间中的目标方向。

例如:把y轴旋转到z轴

// 把y轴旋转到z轴
this.transform.rotation = Quaternion.FromToRotation(Vector3.up, transform.forward);

运算符

在这里插入图片描述


更多内容请查看总目录【Unity】Unity学习笔记目录整理


http://chatgpt.dhexx.cn/article/0BMheB4r.shtml

相关文章

unity学习笔记——Quaternion(四元数)

本篇文章转自https://www.cnblogs.com/driftingclouds/p/6626183.html Quaternion类 Quaternion(四元数)用于计算Unity旋转。它们计算紧凑高效,不受万向节锁的困扰,并且可以很方便快速地进行球面插值。 Unity内部使用四元数来表…

【Unity编程】Unity中关于四元数的API详解

Unity中关于四元数的API详解 Quaternion类 Quaternion(四元数)用于计算Unity旋转。它们计算紧凑高效,不受万向节锁的困扰,并且可以很方便快速地进行球面插值。 Unity内部使用四元数来表示所有的旋转。 Quaternion是基于复数&am…

四元数快速入门【Quaternion】

四元数(Quaternion)是用于旋转和拉伸向量的数学运算符。 本文提供了一个概述,以帮助理解在空间导航等应用程序中对四元数的需求。 推荐:用 NSDT场景设计器 快速搭建3D场景。 可以通过多种方式在空间中准确定位、移动和旋转物体。 …

四元数(Quaternion)食用指南

四元数(Quaternion)食用指南 “这简直就是黑魔法!” 开发时,每次遇到旋转问题时总会心头一震,在欧拉角和四元数这两种处理方式的选择上犹豫不决,不知不觉就陷入了四元数的淤泥中…接下来,我决定…

Unity3D - 详解Quaternion类

一、简介 Quaternion又称四元数,由x,y,z和w这四个分量组成,是由爱尔兰数学家威廉卢云哈密顿在1843年发现的数学概念。四元数的乘法不符合交换律。从明确地角度而言,四元数是复数的不可交换延伸。如把四元数的集合考虑成多维实数空间的话&…

int 的最大值

int 的最大值 java int 类整数的最大值是 2 的 31 次方 - 1 2147483648 - 1 2147483647 可以用 Integer.MAX_VALUE 表示它,即 int value Integer.MAX_VALUE; Integer.MAX_VALUE 1 Integer.MIN_VALUE -2147483648 再大的数就要用 long (最大值 …

Python获取int最大值和float最大值

计算机所能表示的最大值,根据你的计算机的位数决定。有机计算机是64位,有的是32位,因此具体情况各不相同。本人的电脑是64位的。 1.获得int型的最大值 import sys MAX_INTsys.maxsize print(MAX_INT)2.获得float型的最大值 ##灰常简单 max…

C语言数据类型 int、long int 最大值

一、注意:前提是32位计算机: unsigned int 0~4294967295 int -2147483648~2147483647 unsigned long 0~4294967295 long -2147483648~2147483647 long long的最大值:9223372036854775807 long …

C++-int最大值

uint范围 0-255 int范围 -128 - 127 -2147483647 原码1111 1111 1111 1111 1111 1111 1111 1111-2147483647-1-2147483648;由于cpu里面存的是补码计算-2147483647  补码1000 0000 0000 0000 0000 0000 0000 0001-1       补码1111 1111 1111 1111 1111 1111 1111 11…

c语言求int的最大值最小值,c语言 int最大值是多少?

喵喔喔 int最大值,根据编译器类型不同而变化,具体如下:1、对于16位编译器,int占16位(2字节)。int的最大值为32767.2、对于32位和64位编译器,int占32位(4字节)。int的最大值为21474836473、可以通过打印sizeof(int)查看…

C语言|int型最大值和最小值

一.int型的最值 有符号 最小值:-2147483647-1最大值:2147483647 无符号 最大值:0xffffffff最小值:0 大家可以在整形类型的取值范围限制头文件中查看:limits.h 二.int型最小值的原因 当我们直接给int型变量赋-214748364…

软件测试管理神器之zentao(禅道)-BUG管理

软件测试管理神器之zentao(禅道)-BUG管理 禅道在遵循其管理方式基础上,结合国内研发现状,整合了bug管理,测试用例管理,发布管理,文档管理等功能,完整的覆盖了软件研发项目的整个生命周期。在禅道软件中&…

软件测试Bug

bug组成 缺陷编号-测试管理系统自动生成缺陷标题->用简短精确的话语来描述你的bug缺陷类型--代码错误(功能--预期结果--Bug/未做功能---bG)/设计缺陷(需求不全面,考虑的场景遗漏)/界面优化(U-—致,去检查ui)缺陷等级-->致命(系统瘫痪、环境出错、无法进入下一步测试)/严…

禅道—禅道Bug管理模块

禅道官网:https://www.zentao.net/ 简介: 开源免费的项目管理软件、集产品管理、项目管理、测试管理一体以及事物管理组织管理的功能 使用原因: 开源 方便跟踪管理Bug使用简单易学及多种管理于一身 1、Bug操作流程 2、Bug的几种解决方案 …

软件测试bug文章,软件测试技术之说一个让你印象最深的bug?

本篇文章主要讲述软件测试技术之说一个让你印象最深的bug?,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。 今天来聊一下测试面试必问题目:说一个让你印象最深的bug? 被问到这个问题,如果面试者之前没有总结和准备过,会一下子被问懵逼,瞬间紧张…

软件测试常见Bug清单

软件测试中,bug的类型有很多种,比如:代码错误、界面优化、设计缺陷、需求补充和用户体验等; 一般情况下,需求补充和设计缺陷比较好区分,但是代码错误、界面优化和用户体验区分不是很明显; 下面…

禅道的Bug管理流程介绍

禅道是一款以Bug管理为核心,覆盖全人员、全流程的全生命周期项目管理软件。能够为项目研发提供全程支撑,持续对团队的研发项目进行有序的管理和跟进,完整覆盖研发项目的核心流程。 非常多团队关注禅道的主要原因是关注禅道作为Bug管理工具、…

常用BUG管理工具系统

常用BUG管理系统 1.EasyBUG 优点: 1)基于WEB的在线的,不用配置; 2)界面简单,操作容易上手,基本上只要是会上网的人一看就会用 3)拥有截图功能,以图片的形式直接存在,而不是以附件形式; 4)BUG解决流程记录在案;有统计报表,一目了然; 5)国产且免费的。 缺点:…

常用BUG管理工具系统介绍

1.BUG猫 1)基于WEB的在线的,不用配置; 2)界面简单,操作容易上手,基本上只要是会上网的人一看就会用; 3)截图直接可以粘贴,而不需要保存之后再上传; 4)描述以图片的形式直接存在,…

Bug软件缺陷管理制度

软件缺陷又被叫做Bug。所谓软件缺陷,即为软件中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。缺陷的存在会导致软件产品在某种程度上不能满足用户的需要。IEEE729-1983对缺陷有一个标准的定义:从产品内部看,缺陷是…