初面网初面网

Vector2 二维向量

四个方向

  • 上:Vector2.up((0, 1))
  • 下:Vector2.down((0, -1))
  • 左:Vector2.left((-1, 0))
  • 右:Vector2.right((1, 0))

标量

  • 单位向量:Vector2.one((1, 1))
  • 零向量:Vector2.zero((0, 0))

向量运算

  • 加法:Vector2.Add(v1, v2)(返回 v1 和 v2 的和)
  • 减法:Vector2.Subtract(v1, v2)(返回 v1 和 v2 的差)
  • 乘法:Vector2.Multiply(v, scalar)(返回 v 与标量的乘积)
  • 除法:Vector2.Divide(v, scalar)(返回 v 与标量的商)
  • 相等:Vector2.Equals(v1, v2)(判断 v1 和 v2 是否相等)。相等判断是基于向量的坐标值是否完全相同,即长度和方向都相同。
  • 点积:Vector2.Dot(v1, v2)(返回 v1 和 v2 的点积)。点积可以用于判断两个向量的方向是否相同,或者判断一个向量在另一个向量上的投影长度。
  • 叉积:Vector2.Cross(v1, v2)(返回 v1 和 v2 的叉积)。叉积可以用于判断两个向量是否垂直,或者计算两个向量组成的三角形的面积。
  • 长度:Vector2.Magnitude(v)(返回 v 的长度)
  • 夹角: Vector2.Angle(v1, v2) 计算无符号夹角
  • 距离: Vector2.Distance(v1, v2)
  • 模长平方:Vector2.SqrMagnitude(v)(返回 v 的模长平方)
  • 归一化:Vector2.Normalize(v)(返回 v 的单位向量)
  • 最小向量:Vector2.Min(v1, v2) - 返回 x 和 y 都较小的向量
  • 最大向量:Vector2.Max(v1, v2) - 返回 x 和 y 都较大的向量
  • 插值: Vector2.Lerp(v1, v2, t) - 线性插值,t 为插值参数(0 到 1 之间)
  • 有符号夹角:Vector2.SignedAngle(v1, v2) - 计算 v1 到 v2 的有符号夹角(单位:度)。如果 v1 到 v2 的旋转方向是顺时针,则返回正值;如果是逆时针,则返回负值。
  • 平滑插值:Vector2.SmoothDamp(current, target, ref currentVelocity, smoothTime) - 平滑插值,current 为当前值,target 为目标值,currentVelocity 为当前速度引用,smoothTime 为平滑时间(单位:秒)。

构造函数

  • Vector2(x, y):创建一个二维向量,x 为水平方向,y 为垂直方向。
Vector2 v = new Vector2(1, 2);

读取向量的属性

  • x:v.x(返回向量的水平方向分量)
  • y:v.y(返回向量的垂直方向分量)
  • 下标:v[0](返回向量的水平方向分量),v[1](返回向量的垂直方向分量)

插值的使用

  • 线性插值:Vector2.Lerp(v1, v2, t) - 线性插值,t 为插值参数(0 到 1 之间)。

    • 示例:Vector2.Lerp(v1, v2, 0.5f) 表示将 v1 和 v2 之间的向量,以 50% 的比例进行插值。
  • 有符号插值:Vector2.SmoothDamp(current, target, ref currentVelocity, smoothTime) - 平滑插值,current 为当前值,target 为目标值,currentVelocity 为当前速度引用,smoothTime 为平滑时间(单位:秒)。

    • 示例:Vector2.SmoothDamp(currentPosition, targetPosition, ref currentVelocity, 0.5f) 表示将当前位置 currentPosition 平滑插值到目标位置 targetPosition,平滑时间为 0.5 秒。
    • 注意:currentVelocity 是一个引用参数,用于存储当前速度。在每次调用 SmoothDamp 方法时,需要传递一个当前速度的引用,用于更新速度。

MoveTowards

  • MoveTowards(current, target, maxDistanceDelta):将当前向量 current 向目标向量 target 移动,最大移动距离为 maxDistanceDelta。
    • 示例:Vector2.MoveTowards(currentPosition, targetPosition, 0.5f) 表示将当前位置 currentPosition 向目标位置 targetPosition 移动,最大移动距离为 0.5 单位。

更新于 2026/2/26