Vector2类

Vector2类是Unity中用来存储二维向量或二维点坐标的结构体类型

介绍Vector2类的实例方法、静态方法以及运算符


A、Vector2类实例方法

1、Normalize:单位化Vector2实例

public void Normalize();

此方法用来单位化向量,改变了原始向量,无返回值

实例属性normalized与此方法功能相同,但使用属性normalized来单位化向量时,不改变原始向量,且有返回值


B、Vector2类静态方法

1、Angle:两个向量夹角

public static float Angle(Vector2 from, Vector2 to);

其中参数from为起始向量,参数to为结束向量

此方法用于返回两个Vector2实例的夹角,单位为角度,返回值的取值范围为[0,180],并且当from和to当中至少有一个向量为Vector2.zero的时候返回值为90


2、ClampMagnitude:向量长度

public static Vector2 ClampMagnitude(Vector2 vector, float maxLength);

此方法用于返回向量的长度,且最大不超过maxLength

设:

Vector2 A=new Vector2( ax , ay );

float b=maxL;

Vector2 C=Vector2.ClampMagnitude( A , b);

则:

C.x=ax*K;

C.y=ay*K;

其中,K=|b/(ax^2+ay^2)^1/2|>1?1:b/(ax^2+ay^2)^1/2

当A为Vector2.zero时,返回值为二维零向量

此方法功能类似一个钟摆的摆动,|ax|代表沿着x轴的最大摆幅,|ay|代表沿着y轴的最大摆幅,而b值则代表着摆动的幅度


3、Lerp:向量插值

public static Vector2 Lerp(Vector2 from, Vector2 to, float t );

其中参数from为插值的起始向量,参数to为插值的结束向量,参数t为插值系数

此方法用于求参数from到参数to的插值向量,其中插值系数的有效值为[0,1]

Vector2 v=Vector2.Lerp(new Vector2(a,b), new Vector2(c,d), e )

v.x=a*(1-t)+c*t

v.y=b*(1-t)+d*t


4、MoveTowards:向量插值

public static Vector2 MoveTowards(Vector2 current, Vector2 target, float maxDistanceDelta);

其中参数current为移动起始点坐标,参数target为移动目标点,参数maxDistanceDelta为移动的参考系数

此方法用于返回两个向量的插值,且最大插值不超过maxDistanceDelta

Vector2 C=Vector2.MoveTowards(A, B, sp);

C=A+k*d=(ax+K(bx-ax), ay+k*(by-ay));

K=sp/((dx^2+dy^2))^1/2>1?1:sp/((dx^2+dy^2))^1/2

MoveTowards和Lerp方法的功能类似,MoveTowards要比Lerp的插值次数多,视觉效果上也更平滑,但计算更消耗时间


5、Scale:向量放缩

public static Vector2 Scale(Vector2 a, Vector2 b);

此方法用于返回向量a按向量b进行的放缩后的值,即向量a和向量b的乘积


C、Vector2类运算符

1、operator == (lhs:Vector2,rhs:Vector2)

用于判断两个向量是否相等

不仅当lhs和rhs的分量值都相同时返回true,而且当lhs和rhs的各个分量值虽然不同但足够接近时也会返回true