Vector2
静态变量
down | (0, -1) |
left | (-1, 0) |
right | (1, 0) |
up | (0, 1) |
one | (1, 1) |
zero | (0, 0) |
变量
magnitude | 取得一个向量的长度 |
normalized | 标准化向量,即方向保持不变,长度变为1,不会修改自身 |
sqrMagnitude | 取得向量的平方根,一般用于判断两个向量的长度 |
this[int] | this[0]表示x,this[1]表示y |
x | X值 |
y | Y值 |
magnitude
sqrMagnitude
print(Vector2.down); //(0,-1)
print(Vector2.up); //(0,1)
print(Vector2.left); //(-1,0)
print(Vector2.right); //(1,0)
print(Vector2.one); //(1,1)
print(Vector2.zero); //(0,0)
Vector2 a = new Vector2(2, 2);
Vector2 b = new Vector2(3, 4);
print(a.magnitude); //2.828427
print(a.sqrMagnitude); //8
print(b.magnitude); //5
print(b.sqrMagnitude); //25
print(a.normalized); //(0.7,0.7)
print(b.normalized); //(0.6,0.8)
print(a.x + "," + a.y); //2,2
a.Normalize();
print(a[0] + "," + a[1]); //0.7071068,0.7071068
向量是结构体,是值类型,要整体赋值
//向量是结构体,是值类型,要整体赋值
transform.position = new Vector3(3, 3, 3);
Vector3 pos = transform.position;
pos.x = 10;
transform.position = pos;
静态方法
Angle | 获取两个向量的夹角 |
ClampMagnitude | public static Vector2 ClampMagnitude(Vector2 vector, float maxLength); 将向量vector的长度限定在maxLength,如果长度大于maxLength,则vector方向不变,长度设为maxLength |
Distance | 获取两个向量的距离 Vector2.Distance(a,b) 等同于 (a-b).magnitude. |
Dot | 点乘 |
Lerp | 插值运算 |
LerpUnclamped | 不限定插值运算 |
Max | 取两个向量长度最大的 |
Min | 取两个向量长度最小的 |
MoveTowards | 当前坐标向目标坐标按一定距离进行移动 public static Vector2 MoveTowards(Vector2 current, Vector2 target, float maxDistanceDelta); current:当前坐标 target:目标坐标 maxDistanceDelta:移动距离 |
方法
Equals | 判断两个向量是否相等 |
Normalize | 把向量自身进行单位化,会对这个向量进行修改的 |
Set | 对向量自身进行赋值 |
Vector2 a = new Vector2(2, 2);
Vector2 b = new Vector2(3, 4);
Vector2 c = new Vector2(3, 0);
print(Vector2.Angle(a, b)); //8.130091
print(Vector2.Angle(a, c)); //45
print(Vector2.ClampMagnitude(c, 2)); //(2.0,0.0)
print(Vector2.Distance(b, c)); //4
print(Vector2.Lerp(a, b, 0.5f));//(2.5, 3)
print(Vector2.LerpUnclamped(a, b, 0.5f));//(2.5, 3)
print(Vector2.Lerp(a, b, 2f));//(3,4)
print(Vector2.LerpUnclamped(a, b, 2f)); //(4,6)
print(Vector2.Max(a, b)); //(3,4)
print(Vector2.Min(a, b)); //(2,2)
public Vector2 a = new Vector2(2, 2);
public Vector2 target = new Vector2(10, 3);
void Update () {
a = Vector2.MoveTowards(a, target, Time.deltaTime); //1秒运行1米
}
Vector3
静态变量
back | (0, 0, -1) |
down | (0, -1, 0) |
forward | (0, 0, 1) |
left | (-1, 0, 0) |
one | (1, 1, 1) |
right | (1, 0, 0) |
up | (0, 1, 0) |
zero | (0, 0, 0) |
静态方法
Cross | 叉乘运算 | a和b叉乘得到向量Result,垂直于ab平面 |
Distance | 取得长度 |
|
Dot | 点乘 |
|
Lerp | 分别对x,y,z进行插值运算 |
|
Max | 取长度最大的向量 |
|
Min | 取长度最小的向量 |
|
MoveTowards | 用来进行移动 | 由当前位置向目标位置按一定的速度进行移动 |
Normalize | 将自身进行标准化 |
|
Project | 投影 | public static Vector3 Project(Vector3 vector, Vector3 onNormal); |
Reflect | 反射 | public static Vector3 Reflect(Vector3 inDirection, Vector3 inNormal); |
Slerp | 两个向量按照角度进行插值运算 |
对向量的加减乘除操作
operator - | b – a = a朝向b |
operator + | a+b = a向量和b向量首尾相接,然后从原点连接b |
operator * | public static Vector3 operator *(Vector3 a, float d); 用来对速度进行加速 |
operator / | public static Vector3 operator /(Vector3 a, float d); 用来对速度进行减速 |
operator == | 判断两个向量是否相等 |
Vector2 a = new Vector2(2, 2);
Vector2 b = new Vector2(3, 4);
Vector2 res = b - a;
print(res);//(1,2)
print(res * 10);//(10,20)
print(res / 5);//(0.2,0.4)
print(a + b);//(5,6)
print(a == b);//flase