Unity笔记—5(Unity常用API整理之运算类与3D数学)
文章目录
前言
自学笔记,没有历史知识铺垫(省略百度部分),系列性的记录核心的实用笔记,本章主要记录Unity常用API 运算工具方法一、Mathf类(运算方法-核心知识点)
静态属性
Mathf.Deg2Rad:角度值转弧度值的单位,如30°的弧度为30Mathf.Deg2Rad=0.5235988
Mathf.Rad2Deg:弧度值转角度值的单位,如0.5235988的角度为Mathf.Rad2Deg 0.5235988F=30
Mathf.PI: 3.1415926
静态方法
Mathf.Abs():绝对值方法
Mathf.Acos():反余弦–以弧度为单位计算并返回参数 f 中指定的数字的反余弦值。
Mathf.Approximately():用于比较两个浮点值,当浮点值比较接近时即可返回true(浮点值的不稳定性,并非每次都返回true,该方法可以在相近时返回true)
Mathf.Asin():反正弦–以弧度为单位计算并返回参数 f 中指定的数字的反正弦值。
更多参考Unity中Mathf常用方法整理
Unity中常用的Mathf函数(自用)
二、Vector3类(三维向量-核心知识点)
静态属性
如下静态属性一般在鼠标点击或操作后,转化为三维坐标时使用,参数为(x,y,z)
- forward: (0,0,1) --前
- back :(0,0,-1)–后
- left : (-1,0,0)–左
- right :(1,0,0)–右
- up :(0,1,0)–上
- down :(0,-1,0)–下
- one :(1,1,1)–三轴的正方向,通常用于坐标或者scale(分量相乘)
- zero:(0,0,0)
- positiveInfinity–正无穷大
- negativeInfinity–负无穷大
属性
- magnitude:向量长度 – 返回此向量的长度(xx+yy+z*z)的平方根(只读)。
- normalized:向量标准化 – 返回此向量,其大小最大为1,若向量过小可能为0(只读)
- sqrMagnitude:向量长度的平方 – 返回此向量的平方长度,如果向量长度过小,可是用向量长度的平方计算(只读)。
- this[int] – 分别使用[0],[1],[2]访问x,y,z分量。
- x – 向量的X分量。
- y – 向量的Y分量。
- z – 向量的Z分量。
公开方法
- Equals:比较三维向量是否相等
- Set: 设置三维向量
- ToString:三维向量字符串化
三维向量运算
三维向量支持+ - * / == != 进行运算
静态方法
-
Normalize:向量标准化方法 – 与属性的区别是直接传入三维向量参数,返回值即为标准化三维向量
-
Angle:夹角 – 两个三维向量之间的夹角(如计算范围技能的夹角使用)
-
ClampMagnitude: 限制分量长度的向量 – (传入向量差和最大长度可以得到增量的三维向量,如做控制盘拖动限制时使用)
-
Cross: 叉积
-
Dot:点积
-
Distance: 返回两个向量的距离
-
Lerp:线性差值 – 最常用的方法之一,用于计算from到to之间的差值,第三位=0时为from,第三位=1时为to,=0.5时返回平均数,平滑跟随时常用,无限接近效果
-
LerpUnclamped:非牵制性线性插值 – 与Lerp类似,不过范围会超出0-1的边界
-
Max: 返回最大的向量
-
Min: 返回最小的向量
-
MoveTowards: 最常用方法之一,类似Lerp,当前向量向目标向量移动,移动速度不会超过设置的最大值,负值将远离目标
-
OrthoNormalize: 向量标准化并相互正交,三个坐标轴的正交化
-
Project:矢量投影 – 做弹道/轨迹等(具体没试过)
-
ProjectOnPlane: 平面投影 – 可以用于血条等固定方向显示(不常用)
-
Reflect: 获得反射向量
-
RotateTowards: 当前向量转向目标(限制最大转向速度)
-
Scale: 向量每个分量做乘积
-
SignedAngle:根据指定轴和向量返回顺时针?? 正是右,负是左(不太了解)
-
Slerp:球面线性插值 – 用于方向向量的场景(太阳东升西落/转身)
-
SlerpUnclamped:非牵制球面线性插值 – 与Slerp的区别是范围会超出0-1的边界
-
SmoothDamp:平滑阻尼 – 平滑的向目标推进,如平滑跟随相机
三、Vector3Int类(三维向量整数化)
和Vector3的区别是,Vector3Int用于不需要浮点精度的位置和矢量运算
其他方法和属性与Vector3几乎一致,此处不再记录
- CeilToInt:三维向量分量按照最大整数值转换为整数三维向量
- Distance:返回两个向量的距离,方法等同于(a-b).magnitude
- FloorToInt:三维向量分量按照最小整数值转换为整数三维向量
- Max:返回两个三维向量较大的一个
- Min:返回两个三维向量较小的一个
- RoundToInt:三维向量四舍五入为整数三维向量
- Scale:整数三维向量缩放
四、Vector2类(二维向量)
可以通过三维向量的方法和属性直接推出二位向量的方法和属性,少了x轴
静态属性
如下静态属性一般在鼠标点击或操作后,转化为二维坐标时使用,参数为(x,y)
- left : (-1,0)–左
- right :(1,0)–右
- up :(0,1)–上
- down :(0,-1)–下
- one :(1,1)–三轴的正方向,通常用于坐标或者scale(分量相乘)
- zero:(0,0)
- positiveInfinity–正无穷大
- negativeInfinity–负无穷大
属性
- magnitude:向量长度 – 返回此向量的长度(xx+yy)的平方根(只读)。
- normalized:向量标准化 – 返回此向量,其大小最大为1,若向量过小可能为0(只读)
- sqrMagnitude:向量长度的平方 – 返回此向量的平方长度,如果向量长度过小,可是用向量长度的平方计算(只读)。
- this[int] – 分别使用[0],[1]访问x,y分量。
- x – 向量的X分量。
- y – 向量的Y分量。
公开方法
- Equals:比较二维向量是否相等
- Set: 设置二维向量
- ToString:二维向量字符串化
- Normalize:二维向量标准化
二维向量运算
二维向量支持+ - * / == != 进行运算
静态方法
- Angle:夹角 – 两个二维向量之间的夹角(如计算范围技能的夹角使用)
- ClampMagnitude: 限制分量长度的向量 – (传入向量差和最大长度可以得到增量的二维向量)
- Dot:点积: 返回两个二维向量的点积,当两个向量方向一致时返回1,相反是返回-1,其他方向是[-1,1]之间的过渡值(向量的角度越小,值越大)
- Distance: 返回两个向量的距离
- Lerp:线性差值 – 最常用的方法之一,用于计算from到to之间的差值,第三位=0时为from,第三位=1时为to,=0.5时返回平均数,平滑跟随时常用,无限接近效果
- LerpUnclamped:非牵制性线性插值 – 与Lerp类似,不过范围会超出0-1的边界
- Max: 返回最大的向量
- Min: 返回最小的向量
- MoveTowards: 最常用方法之一,类似Lerp,当前向量向目标向量移动,移动速度不会超过设置的最大值,负值将远离目标
- Perpendicular:返回垂直于指定二维向量的二维向量(二维向量默认以Y轴逆向旋转90)
- Reflect: 获得反射向量
- Scale: 向量每个分量做乘积
- SignedAngle:返回较小的夹角
- SmoothDamp:平滑阻尼 – 平滑的向目标推进
五、Vector2Int类(二维向量整数化)
与整数化的三维向量和三维向量的关系和方法一致,此处不再记录,目的是将二维向量与整数二维向量相互转换
六、Vector4类(四维向量)
在官方文档中看到这个类,四维向量本身不代表任何意义,只是有4个属性 w x y z,通常可以表示颜色,如xyz表示RPG,w表示透明度,也可以表示三维向量,xyz表示方向,w表示缩放等,四维向量的方法基本上是三维向量的基础方法,暂时不再记录,等到类似场景时再记录用法,大多数情况使用三维向量即可
七、3D数学干货贴收集
记录在这里方便随时回顾